تحلیل داده و ابزار پاور کوئری (Power Query) در اکسل- بخش سوم
ویکی مطالعاتی جامع: تحلیل داده و ابزار پاور
کوئری (Power Query) در اکسل
جلسهٔ اول (فایل ۳ از ۳) | لیستهای اعتبارسنجی
پویا، تفکیک و استخراج پیشرفته متن، ادغام ستونها و انطباق نسخهها
| عنوان کارگاه / دوره | مدرس | مدت صوت | ساختار آموزشی |
|---|---|---|---|
| هوش تجاری و کنترل پروژه پیشرفته (Excel & Power Query) | در صوت ذکر نشد (استاد دورهٔ کنترل پروژه) | حدود ۵۵ دقیقه | جلسه ۱ (فایل ۳ از ۳ – بخش پایانی جلسه اول) |
فهرست موضوعات کلیدی بررسیشده در این بخش:
- ساخت منوی کشویی پویا (Data Validation Dropdown) با اتصال به خروجی یکتای پاور کوئری
- مقایسه تولید مقادیر یکتا در نسخههای اکسل: اکسل ۲۰۲۴، اکسل ۲۰۲۱ (تابع UNIQUE و عملگر
اسپیل #) و پاور کوئری - چالش تغییر نوع داده در جایگزینی مقادیر (Replace Values) و خطای تزریق متن به ستون عددی
- نگاشت مقادیر با ابزار شرطی (Conditional Column) به عنوان جایگزین امن Find & Replace
- ابزارهای استخراج متنی (Extract) و معادلسازی دقیق با توابع متنی اکسل (LEN, LEFT, RIGHT, MID)
- تفکیک ستون با جداکننده (Split Column by Delimiter) و هوش تشخیص خودکار کاراکتر فضا
(Space) - چالش نامهای چندبخشی فارسی/ایرانی در پایگاههای داده و راهبرد استانداردسازی گردآوری داده (Data
Gathering) در دفتر مدیریت پروژه (PMO) - جداسازی شناسه کاربری و دامنه از ایمیل (Username & Domain Extraction) با تکنیکهای
تفکیک و استخراج - ادغام ستونها (Merge Columns)، تعیین جداکننده سفارشی و اولویت ترتیب انتخاب ستونها
- تفکیکهای بدون جداکننده: جداسازی ارقام از حروف (By Digit to Non-Digit و By Non-Digit to Digit)
- تحلیل تکلیف منزل: استخراج توزیع بودجه روزانه از پریماورا P6 و رسم نمودار S تجمعی هفتگی با پاور کوئری
- سازوکار ذخیرهسازی، بکآپ، امنیت کوئریها در فایل اکسل (Ctrl + S) و سازگاری نسخههای
مختلف نرمافزار
📋 خلاصهٔ اجرایی کلاس
فایل سوم از جلسه اول، مکمل کاربردی دو بخش قبلی است و به حل چالشهای روزمره کاربران در اکسل با ابزارهای
خودکارسازی پاور کوئری اختصاص دارد. کلاس با آموزش ساخت یک فهرست کشویی هوشمند (Data
Validation) آغاز شد؛ بهگونهای که با اضافه شدن رکوردهای جدید به جدول مبدا، اقلام تکراری حذف، حروف
یکدست، اسامی مرتبسازی الفبایی شده و منوی انتخابی بدون فرمولنویسیهای پیچیده اکسلی بهروزرسانی گردد. در ادامه،
دلایل بروز خطا در دستور Replace Values به هنگام تغییر نوع داده تشریح و روش جایگزین با ستون شرطی تدریس
شد. بخش عمده کلاس به کالبدشکافی توابع متنی تب Transform و Add Column نظیر خانواده
Extract (معادلهای مدرن توابع LEN ،LEFT ،RIGHT و MID در اکسل)، تفکیک متون با جداکننده (Split Column)، چالش ساختاری نامهای چندبخشی در مهندسی داده و تفکیک ارقام از حروف بدون کاراکتر
جداکننده اختصاص یافت. در نهایت، نحوه ادغام مجدد ستونها با Merge Columns، تکلیف ترسیم نمودار اسکرو
تجمعی هفتگی از دادههای پریماورا P6 و ضوابط فنی ذخیرهسازی و سازگاری نسخههای اکسل تبیین گردید.
📑 فهرست مطالب تفصیلی
- عنوان و مشخصات جلسه
- خلاصهٔ اجرایی کلاس
- ۱. مقدمه و پیوستگی مباحث
- ۲. ایجاد فهرست کشویی اعتبارسنجی پویا (Dynamic Data Validation)
- ۳. جایگزینی مقادیر و تله مغایرت نوع داده (Type Mismatch)
- ۴. تحلیل سناریوی پروژه و تکلیف خانگی: نمودار S هفتگی از پریماورا P6
- ۵. جعبهابزار استخراج متن (Extract Suite) و معادلهای اکسل
- ۶. مهندسی تفکیک ستونها (Split Column) و پاکسازی اسامی پرسنل
- ۷. فرآیند معکوس: ادغام ستونها (Merge Columns)
- ۸. مباحث زیرساختی: سازگاری نسخهها و ذخیرهسازی کوئریها
- ۹. پرسشها و پاسخهای فنی کلاس
- ۱۰. تحلیل عمیق و منطق جریان داده (نمودار Mermaid)
- ۱۱. واژهنامهٔ جامع و تخصصی
- ۱۲. جدول ماتریس سناریوها و مطالعات موردی
- ۱۳. جدول شناسهها، آمار، نسخهها و نامهای خاص
- ۱۴. کپسول نکات کلیدی امتحانی و استخدامی
- ۱۵. جمعبندی نهایی جلسه اول
- ۱۶. خودآزمون سنجش یادگیری (تستی، کوتاهپاسخ و تشریحی)
۱.
مقدمه و پیوستگی مباحث
در دو فایل پیشین از جلسه اول، ساختار اساسی موتور پاور کوئری (Power
Query)، اصول دیتابیسی خطلوله داده، ترنسپوز جداول ماتریسی و گروهبندی دادهها بررسی شد. در این بخش
پایانی، تمرکز بر روی حلقههای اتصال خروجی پاور کوئری به محیط تعاملی کاربر در اکسل است. ساخت لیستهای کشویی وابسته
و خودکار که بزرگترین دردسر طراحان فرمهای کنترل پروژه است، تبدیل دادههای رشتهای پیچیده، مدیریت باگهای ناشی از
تفاوت تایپ دادهها و آمادهسازی بسترهای تحلیل بودجه و زمان از نرمافزارهایی چون پریماورا P6، سرفصلهای محوری این
فایل آموزشی را تشکیل میدهند.
۲. ایجاد
فهرست کشویی اعتبارسنجی پویا (Dynamic Data Validation)
یکی از نیازمندیهای استاندارد در نرمافزار اکسل، محدود کردن ورودی کاربر به یک فهرست کشویی مجاز از طریق ابزار Data Validation است. چالش بنیادین این است که با افزایش رکوردهای پروژه، لیست کشویی
باید بهصورت خودکار گزینههای جدید را دریافت کند، اقلام تکراری را نمایش ندهد و از نظر الفبایی مرتب باشد [حدود
۰۰:۰۵].
مقایسه رفتار نسخههای اکسل (Excel ۲۰۲۱, ۲۰۲۴, ۳۶۵) در مدیریت مقادیر یکتا [حدود ۰۰:۲۰ تا
۰۱:۴۵]
استاد تفاوت ساختاری نحوه پیادهسازی این نیاز را در نسلهای مختلف اکسل تشریح کرد:
- اکسل نسخه ۲۰۲۴ به بعد: قابلیت Data Validation بهینهسازی شده و در صورتی که ستونی از جدول اکسل
بهعنوان سورس معرفی شود، موتور هوشمند اکسل اقلام تکراری را فیلتر کرده و مقادیر یکتا (Unique) را ارائه میدهد [حدود ۰۰:۲۵]. - اکسل نسخه ۲۰۲۱ و مایکروسافت ۳۶۵: با معرفی موتور آرایههای پویا (Dynamic
Arrays)، تابع اختصاصی=UNIQUE()در اختیار کاربران قرار گرفت. با نوشتن این تابع، دادههای
یکتا استخراج میشوند و با گذاشتن علامت هشتگ (#) در انتهای آدرس سلول مبنا در پنجره Data Validation
(مثلاً=A2#)، محدوده شناورِ گسترشیافته (Spill Range) به فهرست اعتبارسنجی
متصل میگردد [حدود ۰۰:۳۷ و ۰۸:۰۵]. - اکسلهای قدیمی (۲۰۱۹، ۲۰۱۶ و قبلتر): فاقد توابع آرایهای هستند؛ روشهای سنتی مانند
Remove Duplicates دستی ایستا هستند و با تغییر داده منبع بهروز نمیشوند، و استفاده از فرمولهای
آرایهای تودرتو (ترکیب INDEX ،MATCH و COUNTIF) فایل را بسیار سنگین و کند میکند. - روش فراگیر و مستقل از نسخه (پاور کوئری): ساخت یک پایپلاین تمیزکاری سبک که داده را یکتا و
سورت کرده و در قالب یک جدول تمیز در اکسل لود میکند. این روش در تمام نسخههای اکسل از ۲۰۱۰ تا ۲۰۲۴ به طور یکسان
و پایدار کار میکند [حدود ۰۲:۱۰].
💡 مناظره کلاسی پیرامون Define Name:
یکی از دانشجویان پیشنهاد داد که ستون جدول را با ابزار Define Name نامگذاری کرده و به عنوان منبع
اعتبارسنجی معرفی کنیم. استاد متذکر شد که ارجاع ساختاریافته به ستون جدول (مثلاً
=tbl_Source[Discipline]) صرفاً تمام مقادیر آن ستون را فراخوانی میکند، اما اقلام تکراری راحذف نمیکند! بنابراین اگر ۵۰ بار نام Civil در جدول تکرار شده باشد، در منوی کشویی نیز ۵۰ بار کلمه Civil
نمایش داده میشود [حدود ۰۰:۵۰ تا ۰۱:۴۲].
مراحل پایپلاین پاور کوئری: حذف ستونهای مازاد، یکدستی حروف و مرتبسازی [حدود ۰۲:۳۰ تا
۰۴:۰۵]
در شیت ۱-۳، جدول فعالیتها به نام tbl_List قرار دارد. هدف، استخراج دیسیپلینهای مهندسی به عنوان لیست
انتخابی است:
- فراخوانی جدول به پاور کوئری از طریق
Data -> From Table/Range. - انتخاب ستون دیسیپلین (Discipline)، کلیک راست و انتخاب گزینهٔ Remove Other Columns جهت سبکسازی کوئری [حدود ۰۳:۰۴].
- کلیک راست روی ستون و انتخاب دستور Remove Duplicates.
- شناسایی و رفع باگ حساسیت به حروف (Case Sensitivity): مشاهده شد که
کلمهٔcivilبا حرف کوچک وCivilبا حرف بزرگ به عنوان دو داده متمایز حفظ شدهاند! استاد
بلافاصله تکنیک Insert Step را اجرا کرد: کلیک روی مرحله قبل از حذف تکراریها، اعمال
Transform -> Format -> Capitalize Each Wordو تأیید دیالوگ Insert Step. با بازگشت به مرحله
Remove Duplicates، هر دو ادغام شدند [حدود ۰۳:۳۵ تا ۰۳:۵۲]. - مرتبسازی الفبایی: کلیک روی آیکون ستون و انتخاب Sort Ascending (A to Z).
اتصال سلول اکسل به جدول خروجی و آزمون رفرش داینامیک [حدود ۰۴:۱۵ تا ۰۶:۱۵ و ۰۹:۲۰]
کوئری با دستور Close & Load در یک شیت مجزا به نام tbl_List لود گردید. سپس در شیت اصلی
(۳-۱)، سلول زردرنگِ هدف انتخاب شده و از تب Data -> Data Validation، بخش Allow روی
List قرار گرفت. در بخش Source، محدوده مقادیر دیسیپلینها (بدون سرستون) انتخاب گردید [حدود
۰۶:۱۰].
📌 آزمون راستیآزمایی پویایی لیست کشویی:
مدرس در انتهای جدول سورس، سه سطر مدرک جدید با دیسیپلین کاملاً جدیدِ
Process اضافه کرد [حدود ۰۹:۰۵].سپس صرفاً روی جدول کوئری کلیک راست نموده و دکمهٔ Refresh را زد. بلافاصله جدول کوئری بهروزرسانی
شد، دیسیپلین Process به ترتیب الفبایی در جای خود قرار گرفت و با کلیک روی فلش سلول زردرنگ در اکسل، گزینهٔ Process
بدون نیاز به تنظیم مجدد در منوی کشویی ظاهر شد [حدود ۰۹:۳۰].
۳.
جایگزینی مقادیر و تله مغایرت نوع داده (Type Mismatch)
در شیت ۲-۳، جدولی به نام tbl_DocClass (Table ۶) شامل مدارک مهندسی و ستون کلاس مدرک (Doc
Class) با مقادیر عددی ۱، ۲ و ۳ قرار دارد. کارفرما درخواست نموده که به جای ارقام ۱، ۲ و ۳، شناسههای
استاندارد کیفیتی A، B و C جایگزین گردند [حدود ۱۴:۴۵ تا ۱۵:۱۰].
خطای تزریق کاراکتر متنی به ستون عددی و راهحل تغییر تایپ [حدود ۱۶:۱۵ تا ۱۷:۲۵]
⭐ خطای کلاسیک دیتابیسی (Type Incompatibility):
استاد روی عدد ۱ در ستون Doc Class کلیک راست کرده و گزینهٔ Replace Values را انتخاب نمود. در
پنجره بازشده، عدد ۱ بهصورت خودکار در کادر قرار داشت و در کادر جایگزینی حرف
A تایپ شد. به محض زدن OK،کل مقادیر ستون با خطای قرمز Error مواجه شدند!
علت ریشهای: در مرحله بارگذاری اولیه، پاور کوئری مرحلهای خودکار به نام
Changed Typeدرج کرده و نوع این ستون را عدد صحیح (Whole Number) تشخیص داده بود. در منطق
پایگاههای داده رابطهای، قرار دادن یک کاراکتر متنی (Text) درون ظرفی از جنس عدد غیرممکن است [حدود ۱۶:۳۵].
روشهای رفع اشکال:
- روش الف: حذف استپ خودکار
Changed Typeیا تبدیل دستی نوع ستون به Text (ABC) پیش از اجرای دستور جایگزینی [حدود ۱۶:۵۲]. - روش ب: استفاده از ابزار ستون شرطی بدون دستکاری ستون اولیه (روش پیشنهادی مدرس).
نگاشت مقادیر (۱, ۲, ۳ به A, B, C) با Conditional Column [حدود ۱۸:۱۰ تا ۱۹:۳۰]
به جای سه بار تکرار دستور Replace و خطر ارور، استفاده از Conditional Column
در تب Add Column آموزش داده شد:
- تعیین نام ستون نو:
New Class. - شرط اول:
If [Doc Class] equals 1 Then A. - افزودن بند با Add Clause:
Else If [Doc Class] equals 2 Then B. - خروجی نهایی پیشفرض در کادر Else: حرف
C(زیرا دادهها منحصراً ۱، ۲ یا ۳ هستند و نیازی به
تعریف شرط سوم نیست) [حدود ۱۹:۲۰]. - حذف ستون قدیمی و نگهداشتن ستون جدید با دستور Remove Columns.
اشاره به تکنیک پیشرفته Join Tables به عنوان راهحل جامع جداول مرجع [حدود ۱۹:۳۵ تا ۲۰:۰۵]
استاد در پاسخ به دغدغه دانشجویان در خصوص حالتی که تعداد کلاسها به جای ۳ عدد، دهها یا صدها کد مختلف باشد، متذکر
شد که در پروژههای واقعی چنین مواردی با ساخت یک جدول مرجع (Lookup Table) و استفاده از ابزار
ادغام کوئریها (Merge Queries / Join Tables) حل میشود که
در جلسات آتی بهطور مفصل تدریس خواهد شد.
۴.
تحلیل سناریوی پروژه و تکلیف خانگی: نمودار S هفتگی از پریماورا P6
در شیت ۳-۳، یک مجموعه داده خام صنعتی واقعی از بخش Resource Assignment نرمافزار
پریماورا (Primavera P6) استخراج و در اکسل جایگذاری شده است [حدود ۲۱:۰۵].
- ماهیت داده: نمایش بودجه تخصیصیافته روزانه (Daily Distributed Budget)
به ازای فعالیتهای سطح یک ساختار شکست کار (WBS). - صورت مسئله و خواسته مدیریت: کارفرما گزارش را به صورت روزانه نمیپذیرد؛ بلکه نیازمند یک
نمودار تجمعی هفتگی (Weekly Cumulative S-Curve) است تا روند مصرف منابع در قالب نمودار S پایش
گردد [حدود ۲۱:۳۵]. - شیوه سنتی و پرزحمت اکسل: مهندسان کنترل پروژه ناچارند ستونهای کمکی تاریخ گزارش (Data Date) بسازند، فواصل ۷ روزه تعریف کنند، فرمولهای افقی پیچیده نظیر
HLOOKUP
یاXLOOKUPبنویسند و مبالغ را جمع بزنند [حدود ۲۲:۳۰]. - ماموریت پاور کوئری: دانشجویان باید این جدول عریض روزانه را به محیط پاور کوئری ببرند، روزها را
تجمیع هفتگی کنند، تجمعی (Cumulative) مبالغ را محاسبه کرده و نمودار اسکرو را بهگونهای
به کوئری متصل نمایند که با خروجی ماه بعد P6 تنها با یک Refresh نمودار بهروز شود [حدود ۲۲:۰۰].
۵.
جعبهابزار استخراج متن (Extract Suite) و معادلهای اکسل
در شیت ۴، دادههای پرسنلی شامل نام و نام خانوادگی، پروژه منتسب و آدرس ایمیل سازمانی افراد قرار دارد (جدول
tbl_Name) [حدود ۲۲:۵۵]. پیش از ورود به عملیات تفکیک، استاد ابزارهای منوی Extract در دو تب Transform و Add Column را معرفی و با توابع شناختهشده
اکسل مطابقت داد [حدود ۲۷:۱۵ تا ۲۸:۳۰]:
| دستور در پاور کوئری | تابع معادل در اکسل | کارکرد و مکانیزم پردازش | پارامترهای ورودی |
|---|---|---|---|
| Length | LEN() |
شمارش تعداد کل کاراکترها و فضاهای موجود در رشته متنی سلول. | بدون پارامتر (محاسبه طول سلول) |
| First Characters | LEFT() |
جداسازی و نمایش N کاراکتر نخست متن از سمت چپ رشته. | تعداد کاراکتر مورد نیاز (Count) |
| Last Characters | RIGHT() |
جداسازی و نمایش N کاراکتر انتهایی متن از سمت راست رشته متنی. |
تعداد کاراکتر انتها (Count) |
| Range | MID() |
برش و استخراج بخشی از کاراکترهای میانی متن بر مبنای نقطه شروع و طول دلخواه. |
اندیس نقطه شروع (Starting Index) و تعداد کاراکتر (Number of Characters) |
| Text Before Delimiter | ترکیب LEFT و SEARCH(یا TEXTBEFORE در نسخههای جدید)
|
استخراج تمام کلمات واقعشده قبل از یک کاراکتر نشانه مشخص (مانند @ یا خطتیره یا فضا). |
کاراکتر جداکننده (Delimiter) |
| Text After Delimiter | ترکیب RIGHT و SEARCH(یا TEXTAFTER در نسخههای جدید)
|
استخراج تمام کلمات واقعشده پس از یک کاراکتر نشانه مشخص تا انتهای سلول. |
کاراکتر جداکننده (Delimiter) |
| Text Between Delimiters | ترکیب توابع MID وFIND (یاTEXTBETWEEN)
|
استخراج محتوای محصور میان دو کاراکتر مشخص (مانند متن داخل دو پرانتز). |
جداکننده شروع (Start) و جداکننده پایان (End) |
⭐ تأکید امتحانی (تفاوت استخراج و تفکیک):
هنگامی که از منوی Extract در تب Transform استفاده میکنید، بخش
استخراجشده
جایگزین محتوای اولیه همان ستون میشود و سایر بخشهای متن پاک میشوند. اما اگر نیاز
دارید ستون
اولیه سالم بماند یا هر دو بخش متن را به عنوان دو ستون مستقل داشته باشید، باید از دستور تفکیک (Split Column) استفاده کنید [حدود ۳۰:۴۰].
۶. مهندسی
تفکیک ستونها (Split Column) و پاکسازی اسامی پرسنل
در جدول پرسنلی tbl_Name، ستون نام و نامخانوادگی پرسنل به صورت یکپارچه درج شده است
(مانند:
Ali Rezaei، Sara Mohammadi). هدف تفکیک نام کوچک از نام خانوادگی جهت
استانداردسازی
پروندههای ستادی است [حدود ۳۱:۱۵].
تفکیک بر مبنای جداکننده فضا (Space) [حدود ۳۱:۵۰ تا ۳۳:۲۰]
برای شکستن ستون بر اساس کاراکتر فاصله:
- انتخاب ستون نام پرسنل -> ورود به تب Home یا Transform -> کلیک روی Split Column -> By Delimiter.
- هوش مصنوعی پاور کوئری به طور پیشفرض کاراکتر فاصله (Space) را شناسایی و
انتخاب میکند. - در بخش موقعیت شکست (Split at)، گزینهٔ پیشفرض یعنی Each occurrence of
the
delimiter (در هر بار تکرار جداکننده) انتخاب میشود. - با فشردن دکمه OK، ستون جاری به دو ستون مستقل به نامهای
Name.1(نام کوچک) و
Name.2
(نام خانوادگی) تبدیل میگردد [حدود ۳۲:۴۰].
چالش نامهای مرکب و فلسفه طراحی فرآیند گردآوری داده (Data Gathering)
[حدود ۳۳:۴۵ تا
۳۸:۲۰]
در این قسمت از کلاس یکی از مهمترین چالشهای بومی پایگاههای داده در ایران به بحث گذاشته شد: اگر نام
فرد چندبخشی
باشد (مثلاً محمد حسین رضایی یا سید علی حسینی راد)، چه رخ میدهد؟
📌 سناریوی نامهای چندبخشی در کلاس:
اگر در نام
Mohammad Hossein Rezaei تفکیک بر مبنای هر فاصله انجام شود، ستون به سه بخشتقسیم میشود:
Mohammad در ستون اول، Hossein در ستون دوم و Rezaei در ستون سوم قرار
میگیرد؛ در حالی که
برای فرد دونامی (مثل Ali Rezaei)، ستون سوم خالی (null) میماند. اگر گزینه Left-most
delimiter
انتخاب شود،
Mohammad نام و Hossein Rezaei فامیل خواهد شد؛ اما اگر فردی نامشAli و فامیلش Hosseini Rad باشد، گزینه Right-most delimiter نیازاست! هیچ
الگوریتم ثابتی وجود ندارد که بتواند تشخیص دهد کلمه وسط متعلق به نام است یا نام خانوادگی [حدود ۳۵:۱۰ تا
۳۶:۴۰].
💡 نتیجهگیری راهبردی استاد درباره نظام جمعآوری دادهها (Data Gathering):
استاد تأکید کرد: «تمیزکاری دادهها معجزه نمیکند؛ اگر داده از مبدا کثیف و غیراستاندارد جمعآوری شود،
صدها ساعت وقت
تیم تحلیل تلف خواهد شد. وظیفه دفتر مدیریت پروژه (PMO) و متولیان سیستمهای
سازمان این است که
در فرمهای ثبتنام، پورتال استخدام و اکسلهای کارگاهی، از همان ابتدا دو فیلد مجزا
برای “نام” و
“نام خانوادگی” تعبیه کنند تا پرسنل مجبور به تفکیک گردند و نیازی به تفکیکهای پرخطای بعدی در هوش تجاری
نباشد» [حدود
۳۷:۳۰ تا ۳۸:۱۵].
جداسازی شناسه کاربری ایمیل و کاربرد تحلیلی استخراج دامنهها [حدود ۳۸:۵۰ تا
۴۱:۱۰]
در ستون ایمیل سازمانی (مانند a.rezaei@company.com)، مدیریت نیازمند دو خروجی است: ۱)
شناسه کاربری جهت
صدور کارت پرسنلی و ۲) نام دامنه سرور جهت تفکیک پیمانکاران از کارکنان رسمی.
- روش اول (تفکیک ستون): انتخاب ستون ایمیل -> منوی
Split Column -> By Delimiter->
انتخاب کاراکتر سفارشی (Custom) و درج علامت اَتساین (@). نتیجه:
دو ستون
مستقل حاوی نام کاربری و دامنه سرور [حدود ۳۹:۲۰]. - روش دوم (استخراج بدون حذف منبع): تب
Add Column -> Extract -> Text Before Delimiterو درج علامت@جهت استخراج
شناسه؛ سپس
Text After Delimiterجهت استخراج دامنه شرکت بدون دستکاری ستون ایمیل اصلی [حدود ۴۰:۳۵].
تفکیک ارقام از حروف فاقد جداکننده (Digit & Non-Digit Transitions) [حدود
۴۲:۳۰ تا
۴۶:۰۰]
در پروژهها کدهای ترکیبی فعالیتها یا متریالها اغلب بدون کاراکتر جداکننده فضا یا خطتیره تایپ
میشوند؛ به عنوان
مثال کدهایی نظیر: PRJ101Phase یا CIVIL500Site.
⭐ قابلیت شگفتانگیز هوش تفکیک متن در پاور کوئری:
پاور کوئری دو ابزار اختصاصی بدون نیاز به حتی یک خط فرمول برای این شرایط فراهم ساخته است [حدود ۴۳:۱۵]:
- از غیررقم به رقم (By Non-Digit to
Digit): در
مرزی که حروف الفبا تمام شده و اولین عدد آغاز میشود، ستون را برش میزند (مثال: تبدیل
CIVIL500به
دو ستونCIVILو500). - از رقم به غیررقم (By Digit to
Non-Digit): در
مرزی که زنجیره اعداد پایان یافته و مجدداً حروف شروع میشوند، ستون را میشکند (مثال: تفکیک عدد
101
از واژهPhaseدر رشته101Phase).
با اجرای متوالی این دو دستور، کدهای چندگانه ترکیبی کارگاهی به ستونهای مجزای نام دیسیپلین، شماره بسته
و نام فاز
تفکیک میگردند [حدود ۴۵:۱۰].
۷.
فرآیند معکوس: ادغام ستونها (Merge Columns)
برعکس عملیات تفکیک، مواقعی وجود دارد که اطلاعات در چند ستون مجزا (مانند نام، نام خانوادگی، یا پیشوند
کد پروژه)
وارد شدهاند و برای ساخت شناسه یکتا یا چاپ احکام پرسنلی باید به هم متصل شوند [حدود ۴۶:۵۰].
مراحل اجرای ادغام:
- ترتیب انتخاب ستونها: با کلید
Ctrl، ستون نام را انتخاب و سپس روی
ستون نام
خانوادگی کلیک میکنیم. ترتیب انتخاب، ترتیب چیدمان کلمات در خروجی را معین میکند [حدود ۴۷:۱۰]. - کلیک راست روی هدر یکی از ستونها و انتخاب دستور Merge Columns (یا
از تب
Transform / Add Column). - تعیین جداکننده (Separator): از منوی کشویی گزینه Space (یا جداکننده
سفارشی مثل
خطتیره یا آندرلاین) انتخاب میشود. - نامگذاری ستون نهایی: تایپ نام
Full Name[حدود ۴۷:۵۵].
با زدن دکمه OK، ستونهای مبدا حذف شده و ستون ادغامشده با فاصله استاندارد جایگزین میگردد.
۸. مباحث
زیرساختی: سازگاری نسخهها و ذخیرهسازی کوئریها
در دقایق پایانی جلسه اول، استاد به دو دغدغه مهم فنی پیرامون ماندگاری و انتشار فایلهای حاوی پاور
کوئری پاسخ داد
[حدود ۴۹:۳۰ تا ۵۳:۱۵]:
محل فیزیکی ذخیره کوئریها (آیا کدهای M گم میشوند؟) [حدود ۵۰:۱۰]
پاور کوئری یک نرمافزار جانبی نیست؛ بلکه جزئی از پیکره موتور محاسباتی فایل اکسل است. تمام خطوط کدهای
زبان اِم،
زنجیره استپهای ذخیرهشده و ساختار خطلوله داده، دقیقاً درون کدهای فایل اکسل (فرمتهای
.xlsx یا
.xlsb یا .xlsm) فشرده و ذخیره میشوند. کاربر با فشردن کلیدهای
Ctrl + S،
تمام خطوط کوئری را به طور کامل درون سند ذخیره میکند و با انتقال فایل به کامپیوتر دیگر یا ایمیل به
همکاران، هیچ
مرحلهای مفقود نمیگردد [حدود ۵۰:۴۵].
ماتریس سازگاری نسخههای آفیس در سازمانها [حدود ۵۱:۳۰]
اگر فایلی در اکسل ۲۰۲۴ یا مایکروسافت ۳۶۵ ساخته شود و در سیستمی با اکسل ۲۰۱۶ باز شود چه وضعیتی پیش
میآید؟
- هستهٔ موتور پاور کوئری از نسخه ۲۰۱۶ به بعد به صورت پیشفرض در اکسل تعبیه شده و سازگاری رو به عقب
(Backward Compatibility) بسیار بالایی دارد. - تمام دستورات تدریسشده در این دوره (توابع متنی، ترنسپوز، گروهبندی، شروط و استخراج) در تمام
نسخههای ۲۰۱۶،
۲۰۱۹، ۲۰۲۱، ۲۰۲۴ و آفیس ۳۶۵ به یک شکل و بدون نقص کار میکنند [حدود ۵۲:۲۰]. - تنها استثنا توابع بسیار جدید اکسل در محیط شیت (مانند
UNIQUEیا
TEXTSPLIT) هستند که
در اکسلهای قدیمی ارور#NAME?میدهند؛ به همین دلیل تأکید استاد بر انجام تمیزکاری در
پاور کوئری است
تا فایل نهایی وابسته به نسخه اکسل کاربر نباشد [حدود ۵۳:۰۰].
۹.
پرسشها و
پاسخهای فنی کلاس
سؤال دانشجو: در زمان ساخت Data Validation، اگر در منبع اصلی پاور کوئری داده جدید
تکراری اضافه
شود آیا در منوی کشویی هم تکرار میشود؟ [حدود ۰۷:۴۵]
پاسخ استاد: خیر؛ چون در پایپلاین پاور کوئری مرحله Remove Duplicates را
ثبت کردهایم،
هر تعداد داده تکراری جدید هم در شیت اکسل تایپ شود، با فشردن دکمه Refresh ابتدا از فیلتر حذف موارد
تکراری رد شده
و در نهایت دقیقاً یک رکورد یونیک به لیست کشویی تحویل داده میشود.
سؤال دانشجو: چرا وقتی دو ستون را مرج میکنیم ستونهای قبلی پاک میشوند؟ اگر به
آنها نیاز
داشته باشیم چه کنیم؟ [حدود ۴۸:۱۵]
پاسخ استاد: دستور Merge در تب Transform ماهیت بازنویسی درجا دارد. اگر به
ستونهای
اولیه نیاز دارید، دستور را از تب Add Column -> Merge Columns اجرا کنید تا ستونهای
اولیه
دستنخورده باقی بمانند و ستون پیوندی به عنوان ستونی نو اضافه شود.
سؤال دانشجو: آیا برای تکلیف S-Curve نرمافزار پریماورا، میتوانیم فایل XER را
مستقیماً وارد
پاور کوئری کنیم؟ [حدود ۲۴:۳۰]
پاسخ استاد: ورود مستقیم ساختار دیتابیس XER مربوط به جلسات آینده است. برای این جلسه
صرفاً داده
استخراجشده در اکسل شیت ۳-۳ مد نظر است که باید با همین ابزارهای ترنسپوز و تجمیع هفتگی تبدیل شود.
۱۰.
تحلیل عمیق و منطق جریان داده (نمودار فلوچارت Mermaid)
فلوچارت زیر چرخه کامل پردازش داده در سناریوهای فایل سوم را ترسیم میکند؛ از ایجاد فهرست کشویی
اعتبارسنجی پویا تا
خطلوله تفکیک هوشمند شناسهها و ایمیلها:
flowchart RL
subgraph S1["خطلوله ساخت لیست کشویی پویا Data Validation"]
A["دادههای خام با اقلام تکراری و حروف متفرقه"] --> B["حذف ستونهای اضافی با Remove Other Columns"]
B --> C["استانداردسازی حروف با Capitalize Each Word"]
C --> D["حذف اقلام تکراری با Remove Duplicates"]
D --> E["مرتبسازی الفبایی با Sort Ascending"]
E --> F["بارگذاری در شیت و اتصال به Data Validation"]
end
subgraph S2["خطلوله پردازش و تفکیک متن Split & Extract"]
G["رشته متنی پرسنلی یا کد ترکیبی"] --> H{"دارای جداکننده مشخص Delimiter؟"}
H -->|"بله مانند Space یا @"| I["Split Column by Delimiter"]
H -->|"خیر ترکیب عدد و حروف"| J["Split by Non-Digit to Digit"]
I --> K["تولید ستونهای نام، نام خانوادگی، دامنه"]
J --> L["تفکیک خودکار شماره پروژه و فاز"]
end
F --> M["محیط تعاملی داشبورد اکسل با قابلیت Refresh خودکار"]
K --> M
L --> M
۱۱.
واژهنامهٔ جامع و تخصصی
| اصطلاح (فارسی و لاتین) | تعریف طبق محتوای کلاس | توضیح و زمینهٔ استفاده | تأکید امتحانی؟ |
|---|---|---|---|
| دیتا ولیدیشن (Data Validation) |
ابزار اعتبارسنجی داده در اکسل برای ساخت منوهای کشویی انتخابی و جلوگیری از خطای ورودی کاربر. |
اتصال به جدول خروجی پاور کوئری برای ساخت لیستهای کشویی خودکار و بدون تکرار. |
بله |
| ریموف آدر کالمز (Remove Other Columns) |
دستوری برای حذف سریع تمام ستونهای جدول به جز ستون یا ستونهای انتخابشده جاری. |
سبکسازی کوئری در تمرین استخراج دیسیپلینهای مهندسی. |
بله |
| ریموف دوپلیکیتس (Remove Duplicates) |
دستوری برای پالایش مقادیر تکراری و استخراج رکوردهای کاملاً یکتا و منحصربهفرد. |
حساس به حروف بزرگ و کوچک؛ نیازمند یکدستسازی متن پیش از اجرا. |
بله |
| سورت اسندینگ (Sort Ascending) |
مرتبسازی صعودی دادهها (از A به Z برای متون و از کوچک به بزرگ برای اعداد). |
تنظیم ترتیب الفبایی اقلام در منوهای کشویی. | خیر |
| اسپلیت کالم / تفکیک (Split Column) |
مجموعه ابزارهای شکستن محتوای یک ستون به دو یا چند ستون مجزا. |
تفکیک نام و نام خانوادگی، جداسازی ایمیل، تفکیک کد پروژه. |
بله |
| تفکیک با جداکننده (By Delimiter) |
تفکیک ستون بر مبنای یک کاراکتر معین نظیر فاصله، ویرگول، اسلش یا اَتساین. |
رایجترین حالت شکستن متون پرسنلی و آدرسهای ایمیل. |
بله |
| از رقم به غیررقم (By Digit to Non-Digit) |
تفکیک خودکار در مرز تغییر کاراکترهای عددی به حروف الفبا بدون وجود هیچ جداکنندهای. |
شکستن کدهای متصل مانند 101Phase به101 و Phase.
|
بله |
| از غیررقم به رقم (By Non-Digit to Digit) |
تفکیک خودکار در مرز پایان حروف الفبا و شروع اعداد. |
شکستن کدهای متصل کارگاهی مانندCIVIL500 بهدیسیپلین و شماره فعالیت. |
بله |
| اکسترکت / استخراج (Extract) | مجموعه فرامینی برای کشیدن بخشی از متن (مانند تعداد کاراکتر، طول، متن قبل/بعد نشانهها). |
معادل توابع LEN ،LEFT ،RIGHT و MID در اکسل کلاسیک. |
بله |
| Last Characters | RIGHT() |
جداسازی و نمایش N کاراکتر انتهایی متن از سمت راست سلول. |
تعداد کاراکتر مورد نیاز (Count) |
| Range | MID() |
برش و استخراج بخشی از متن از یک نقطه میانی دلخواه تا طول مشخص. |
اندیس شروع (Starting Index) و تعداد کاراکتر (Number of Characters) |
| Text Before Delimiter | ترکیب LEFT وFIND / SEARCH
|
استخراج تمام کاراکترهای واقع در سمت چپ یک نماد خاص (مثلاً جداسازی شناسه قبل از @ در ایمیل). |
نویسه جداکننده (Delimiter) |
| Text After Delimiter | ترکیب RIGHT، LEN وFIND
|
استخراج تمام کاراکترهای واقع در سمت راست یک نماد خاص (مثلاً دریافت دامنه بعد از @). |
نویسه جداکننده (Delimiter) |
| Text Between Delimiters | فرمول تودرتوی MID و دو تابعFIND
|
استخراج محتوای محصور میان دو علامت مشخص (مانند متن داخل پرانتز یا بین دو خطتیره). |
جداکننده آغازین و جداکننده پایانی |
۶. مهندسی
تفکیک ستونها (Split Column) و پاکسازی اسامی پرسنل
در جدول tbl_Name، ستون نام و نام خانوادگی افراد (Full Name) در یک فیلد واحد
ذخیره شده است.
برای گزارشگیری پرسنلی، نام کوچک و نام خانوادگی باید تفکیک گردند [حدود ۲۸:۵۰].
تفکیک بر مبنای جداکننده فضا (Space) [حدود ۲۹:۱۵ تا ۳۱:۰۰]
مسیر اجرای دستور: انتخاب ستون -> تب Transform (یا تب Add Column) -> گزینهٔ Split Column -> انتخاب گزینهٔ By Delimiter.
- تشخیص هوشمند نرمافزار: پاور کوئری به محض باز شدن پنجره، نوع جداکننده را با بررسی
کاراکترهای
متن به صورت پیشفرض روی Space قرار میدهد. - تنظیم موقعیت تفکیک (Split at): سه حالت در اختیار کاربر
قرار دارد:- Left-most delimiter: تفکیک فقط در اولین فاصله از سمت چپ (مناسب برای جداسازی نام اول).
- Right-most delimiter: تفکیک فقط در آخرین فاصله از سمت راست (مناسب برای جداسازی پسوند
فامیلی). - Each occurrence of the delimiter: شکستن سلول در تمام فاصلهها به تعداد ستونهای جدید
[حدود ۳۰:۱۰].
چالش نامهای مرکب و فلسفه طراحی فرآیند گردآوری داده (Data Gathering)
[حدود ۳۱:۳۰ تا
۳۴:۱۰]
⭐ بحث بنیادین مهندسی داده و مدیریت پروژه (تله نامهای چندبخشی):
یکی از دانشجویان پرسید: «اگر نام فرد چندبخشی باشد—مثلاً سید علی اصغر حسینی پور—تفکیک بر اساس
فاصله (Space)
این نام را به ۵ ستون مجزا تبدیل میکند! چگونه این مشکل را با پاور کوئری برطرف کنیم؟»
پاسخ تحلیلی و راهبردی مدرس:
در معماری سیستمهای اطلاعاتی، خطای گردآوری داده (Data Gathering Failure) را
نباید و
نمیتوان با ابزارهای پایپلاین تمیزکاری پاییندست رفع کرد! هیچ الگوریتمی در دنیا نمیتواند حدس بزند
که در عبارت
محمد رضا علی پور، «رضا» متعلق به نام کوچک است یا بخشی از نام خانوادگی.
راهبرد دفتر مدیریت پروژه (PMO): وظیفه ساختاری تیم PMO و IT سازمان این است که در
مبدا ورودی
(فرمهای اکسل، پورتال استخدام یا نرمافزارهای سازمانی)، فیلد نام را از نام
خانوادگی در دو کادر
مجزا دریافت کنند. کاربرد ابزار Split برای زمانی است که یک شناسه با قاعده مشخص (مانند کد پرسنلی، کد
ساختار شکست WBS
یا ایمیل) فرمت یکنواخت دارد [حدود ۳۲:۴۰ تا ۳۴:۰۰].
جداسازی شناسه کاربری ایمیل و کاربرد تحلیلی استخراج دامنهها [حدود ۳۴:۳۰ تا
۳۸:۱۰]
در ستون ایمیل پرسنل (Email)، مقادیری مانند m.ahmadi@mapna.com قرار دارد. مدرس
دو شیوهٔ تفکیک
را پیاده کرد:
- روش اول (استفاده از Extract): ستون ایمیل انتخاب شده و از تب Add Column ->
Extract -> Text
After Delimiter کاراکتر@معرفی گردید تا ستون اختصاصی دامنه شرکتها ساخته شود
[حدود ۳۵:۲۰]. - روش دوم (استفاده از Split Column): دستور
Split Column -> By Delimiterبا کاراکتر
@اجرا شد. ستون اول حاوی شناسه کاربری (Username) و ستون دوم حاوی
دامنه سازمانی
(Domain) گردید. - کاربرد تحلیلی در هوش تجاری: با گروهبندی (Group By) روی
ستون دامنهها،
مدیر پروژه میتواند در یک ثانیه تشخیص دهد چه تعداد از کاربران متعلق به پیمانکار اصلی (مثلاً
@oico.com)، چه تعداد مشاور و چه تعداد دارای ایمیلهای عمومی (نظیر
@gmail.com) هستند
[حدود ۳۷:۴۰].
تفکیک ارقام از حروف فاقد جداکننده (Digit & Non-Digit Transitions) [حدود
۳۸:۴۰ تا
۴۱:۱۰]
در شیت ۵، کدهای ترکیبی فعالیتها نظیر TASK102 یا SEC05B بدون هیچ فاصله یا
خطتیرهای
ذخیره شدهاند. در اکسل سنتی، جداسازی این عبارات مستلزم نوشتن فرمولهای بسیار پیچیده آرایهای با توابع
LOOKUP و کدهای اسکی بود. در پاور کوئری دو دکمه اختصاصی تعبیه شده است:
- از غیررقم به رقم (By Non-Digit to
Digit): به محض
رسیدن متن از یک کاراکتر حرفی به اولین عدد، ستون را میشکند (تبدیلTASK102به دو ستون
TASKو102) [حدود ۳۹:۱۵]. - از رقم به غیررقم (By Digit to
Non-Digit): به محض
رسیدن از عدد به کاراکتر حرفی، شکست را اعمال میکند (مناسب برای کدهایی مانند102SEC)
[حدود ۴۰:۱۰].
۷.
فرآیند
معکوس: ادغام ستونها (Merge Columns)
عملیات عکس تفکیک، ادغام چند ستون مجزا در یک فیلد مشترک است (معادل عملگر آمپرسند & یا
توابع
CONCATENATE و TEXTJOIN در اکسل) [حدود ۴۱:۴۰].
- اهمیت توالی انتخاب ستونها: با کلید
Ctrl، ابتدا ستون First
Name و سپس
ستون Last Name کلیک میشوند. ستونی که اول کلیک شود، در ابتدای متن ادغامی قرار میگیرد [حدود
۴۲:۰۰]. - انتخاب دستور Merge Columns از تب Transform (جهت جایگزینی)
یا تب Add
Column (جهت ایجاد ستون جدید). - تنظیم جداکننده (Separator): انتخاب کاراکتر فاصله (Space) یا کاراکتر سفارشی (Custom) نظیر خطتیره یا ویرگول.
- تعیین نام ستون نهایی:
Full Name[حدود ۴۲:۴۵].
۸. مباحث زیرساختی: سازگاری نسخهها و ذخیرهسازی کوئریها
در دقایق پایانی کلاس، چند پرسش حیاتی پیرامون نحوه ذخیرهسازی و پایداری فایلها مطرح شد [حدود ۴۴:۲۰ تا
۴۸:۰۰]:
💡 محل ذخیره کدهای پاور کوئری کجاست؟
کدهای زبان اِم، ساختار استپها و تعاریف ارتباطی به صورت فایلی مجزا ذخیره نمیشوند؛ بلکه درون
همان فایل اکسل
(.xlsx / .xlsm / .xlsb) تعبیه و ذخیره میگردند. کافی است پس از خروج
از ویرایشگر
(Close & Load)، کلید
Ctrl + S را در اکسل بزنید تا پایپلاین تمیزکاری برای همیشه درفایل تثبیت گردد
[حدود ۴۵:۱۰].
⭐ سازگاری در نسخههای مختلف اکسل:
اگر فایلی در اکسل ۲۰۲۴ یا مایکروسافت ۳۶۵ با پاور کوئری طراحی شود و برای کارفرمایی با اکسل ۲۰۱۶ یا ۲۰۱۹
ارسال گردد،
تا زمانی که از توابع انحصاری جدید موتور اِم استفاده نشده باشد، پایپلاین بهدرستی باز شده و با کلیک
روی
Refresh کار میکند. با این حال، قابلیتهای جدید اکسل سلولی (نظیر اسپیل آرایههای پویا با
#) دراکسلهای قدیمی کار نخواهند کرد [حدود ۴۷:۰۰].
۹.
پرسشها
و پاسخهای فنی کلاس
سؤال دانشجو: در زمان ایجاد لیست کشویی با پاور کوئری، آیا نیازی هست سلولهای خالی
جدول خروجی را
هم دستی فیلتر کنیم؟ [حدود ۰۵:۱۰]
پاسخ استاد: خیر؛ وقتی ستون را در پاور کوئری سورت و دکمه Remove Duplicates
را اجرا
میکنید، تمام سلولهای خالی ادغام شده و نهایتاً به یک مقدار null تبدیل میشوند که با یک
فیلتر ساده در
همان کوئری میتوان تیک null را برداشت تا منوی کشویی کاملاً تمیز باشد.
سؤال دانشجو: چرا وقتی در اکسل ۲۰۲۱ ستون را مساوی میگذاریم کنار آدرس سلول علامت
هشتگ
(#) میآید؟ [حدود ۰۸:۲۰]
پاسخ استاد: علامت # عملگر محدوده سرریز (Spill Range
Operator) است. وقتی با تابعی مثل UNIQUE خروجی پویا تولید میکنید، هشتگ به اکسل
میفهماند که
کل طول شناورِ این ستون (هر چند تا ردیف که رشد کند) را در نظر بگیرد.
سؤال دانشجو: اگر در تفکیک ارقام از حروف، کدی داشته باشیم که چند بار عدد و حرف در
آن جابهجا شده
باشد چه رخ میدهد؟ [حدود ۴۰:۳۰]
پاسخ استاد: هر بار که مرز تغییر نوع کاراکتر (از متن به عدد یا بالعکس) رخ دهد، یک
ستون جدید ساخته
میشود. مثلاً کد A12B3 به چهار ستون تفکیک خواهد شد.
۱۰.
تحلیل عمیق و منطق جریان داده (نمودار Mermaid)
نمودار زیر دو جریان کلیدی پردازششده در این بخش را نمایش میدهد: جریان خودکارسازی لیست اعتبارسنجی
پویا در سمت راست،
و موتور تفکیک و استخراج رشتههای متنی در سمت چپ:
flowchart RL
subgraph S1["پایپلاین لیست اعتبارسنجی پویا Data Validation"]
A["دادههای خام فعالیتها tbl_List"] --> B["حذف ستونهای اضافه با Remove Other Columns"]
B --> C["استانداردسازی حروف با Capitalize Each Word"]
C --> D["حذف اقلام تکراری با Remove Duplicates"]
D --> E["مرتبسازی الفبایی با Sort Ascending"]
E --> F["بارگذاری به عنوان جدول خروجی اکسل"]
F --> G["اتصال به فرمول منوی کشویی List در اکسل"]
end
subgraph S2["موتور تفکیک و پردازش متن Split & Extract"]
H["رشته متنی خام سلول"] --> I{"نوع تفکیک مورد نیاز"}
I -->|"بر مبنای کاراکتر جداکننده Delimiter"| J["تفکیک بر اساس Space یا علامت @"]
I -->|"بر مبنای ماهیت کاراکتر بدون جداکننده"| K["تفکیک Non-Digit to Digit"]
I -->|"استخراج بدون شکستن ستون"| L["ابزارهای خانواده Extract"]
end
G --> M["فرم هوشمند سازمانی پایدار و داینامیک"]
J --> M
K --> M
L --> M
۱۱.
واژهنامهٔ جامع و تخصصی
| اصطلاح (فارسی و لاتین) | تعریف طبق محتوای کلاس | توضیح و زمینهٔ استفاده | تأکید امتحانی؟ |
|---|---|---|---|
| اکسترکت / استخراج (Extract) | مجموعه ابزارهایی در تب Transform و Add Column برای بیرون کشیدن کاراکترهای مشخصی از یک رشته متنی. |
معادل توابع LEN ،LEFT ،RIGHT و MID در اکسل کلاسیک. |
بله |
| عملگر اسپیل / هشتگ (Spill Operator #) |
علامت هشتگ در اکسل ۲۰۲۱ به بعد که به کل محدوده سرریز یک آرایه پویا ارجاع میدهد. |
اتصال فرمول UNIQUE به منوی DataValidation. |
بله |
| اسپلیت کالم (Split Column) |
دستور شکستن و تفکیک محتوای یک ستون متنی به دو یا چند ستون مجزا بر پایه جداکننده یا موقعیت. |
جداسازی نام از نام خانوادگی، یا تفکیک نام کاربری و دامنه ایمیل. |
بله |
| تفکیک از غیررقم به رقم (By Non-Digit to Digit) |
تفکیک هوشمند در مرز انتقال از حروف متنی به اعداد بدون نیاز به وجود کاراکتر جداکننده. |
جداسازی کدهایی مانند TASK102 بهTASK و 102.
|
بله |
| تفکیک از رقم به غیررقم (By Digit to Non-Digit) |
تفکیک هوشمند در مرز انتقال از اعداد به حروف الفبایی. |
جداسازی کدهایی مانند 102SEC. |
بله |
| مرج کالمز / ادغام ستونها (Merge Columns) |
ترکیب مقادیر دو یا چند ستون انتخابی در یک ستون واحد با تعیین کاراکتر جداکننده. |
چسباندن نام و نام خانوادگی به یکدیگر با کاراکتر Space. |
بله |
| حذف تکراریها (Remove Duplicates) |
دستوری برای حذف رکوردهای همسان در ستون انتخابی و نگهداشتن ردیفهای منحصربهفرد. |
ایجاد لیست یکتای دیسیپلینهای مهندسی. | بله |
| حذف سایر ستونها (Remove Other Columns) |
نگهداشتن ستون یا ستونهای انتخابشده و حذف قطعی تمام ستونهای دیگر جدول. |
سبکسازی کوئریهای فرعی جهت بهبود راندمان فایل. | بله |
| تایپ متن (Text – ABC) |
نوع داده کاراکتری که برای ارقام فاقد ارزش ریاضی یا کدها الزامی است. |
پیششرط جایگزینی مقادیر عددی با کاراکترهای متنی جهت پیشگیری از خطای تایپ. |
بله |
| مرج کوئریز (Merge Queries) |
پیوند دو جدول بر مبنای ستون کلید مشترک (معادل JOIN در SQL یا VLOOKUP پیشرفته). |
نگاشت جداول مرجع بزرگ که در جلسات آتی تدریس خواهد شد. |
خیر |
۱۲.
جدول
ماتریس سناریوها و مطالعات موردی
| عنوان سناریو | شرح رویداد و مسئله کلاسی | راهحل و نتیجهگیری مدرس | لینک |
|---|---|---|---|
| لیست کشویی داینامیک دیسیپلینها |
ایجاد منوی انتخابی در اکسل که با اضافه شدن رکوردهای جدید بهطور خودکار بدون اقلام تکراری آپدیت شود. |
ساخت کوئری اختصاصی، حذف ستونهای مازاد، یکدستسازی حروف و مرتبسازی الفبایی. |
بخش ۲ |
| ارور قرمز در جایگزینی کلاس مدرک |
تلاش برای تعویض ارقام ۱، ۲ و ۳ با A، B و C در ابزار Replace Values و قفل شدن ستون با خطای Type Error. |
تبدیل تایپ ستون به Text قبل از جایگزینی یا استفاده بهینه از Conditional Column. |
بخش ۳ |
| تکلیف نمودار S هفتگی از P6 | بودجه روزانه استخراجشده از پریماورا عریض است و مدیریت منحنی تجمعی هفتگی میخواهد. |
انتقال به پاور کوئری، تجمیع هفتگی، محاسبه مقادیر Cumulative و اتصال به چارت اکسل. |
بخش ۴ |
| چالش نامهای چندبخشی فارسی | شکستهشدن اسامی مانند سید علی اصغر حسینی پور به ۵ ستون نامرتب در هنگام تفکیک با Space. |
تاکید بر اصلاح فرمهای گردآوری داده در PMO به جای دستکاری غیرممکن دیتابیسی. |
بخش ۶ |
| تحلیل دامنههای ایمیل سازمانی | جداسازی دامنههای ایمیل جهت احصای تعداد نیروهای پیمانکار، مشاور و کارفرما در پروژه. |
تفکیک با کاراکتر @ و گروهبندی(Group By) روی ستون Domain. |
بخش ۶ |
۱۳.
جدول شناسهها، آمار، نسخهها و نامهای خاص
| مورد / عبارت خاص | مشخصه یا مقدار | دستهبندی فنی | توضیح و زمینه مطرحشده |
|---|---|---|---|
| اکسل ۲۰۲۴ | نسخه جدید نرمافزار | سیستم نرمافزاری | حذف خودکار اقلام تکراری در منوی Data Validation بدون فرمول. |
| اکسل ۲۰۲۱ و ۳۶۵ | معرفی Dynamic Arrays | سیستم نرمافزاری | پشتیبانی از تابع =UNIQUE() و عملگرسرریز #.
|
| Ctrl + S | کلید میانبر ذخیرهسازی | فرمان سیستمی | ذخیره قطعی و درونی کل اسکریپتهای M و پایپلاینها داخل فایل اکسل. |
| tbl_DocClass (Table 6) | نام جدول کلاسی | شیء اکسل | جدول مدارک با کلاسهای ۱، ۲ و ۳ جهت تبدیل به A، B و C. |
| tbl_Name | جدول اسامی و ایمیلها | شیء اکسل | جدول پرسنلی جهت تمرین Split ،Extract و Merge Columns. |
۱۴.
کپسول نکات کلیدی امتحانی و استخدامی
- نقص ارجاع با Define Name در اعتبارسنجی: تعریف
نام روی ستون
جدول اکسل مقادیر تکراری را حذف نمیکند؛ برای لیست کشویی داینامیک یا باید از تابع UNIQUE (اکسل ۲۰۲۱
به بعد) یا از
خروجی یکتای پاور کوئری استفاده شود. - علت خطای Replace Values در ستون عددی: تلاش
برای جایگزینی
حروف متنی در ستونی که نوع داده آن Whole Number است خطای ناسازگاری تایپ ایجاد میکند؛ نوع داده ستون
باید پیش از
دستور به Text تغییر یابد یا از Conditional Column استفاده شود. - تفاوت حالتهای تفکیک Delimiter: حالت
Left-most تنها
در اولین جداکننده میشکند، Right-most در آخرین جداکننده، و Each occurrence در تمام
جداکنندهها
ستون جدید میسازد. - تفکیک بدون جداکننده: دستور By Non-Digit to
Digit
رشتههای متصل مانندTASK102را بدون نیاز به فرمولنویسی به حرف و عدد تفکیک میکند. - قانون تقدم در ادغام ستونها: در ابزار Merge
Columns،
ترتیب کلیک روی ستونها با کلید Ctrl تقدم چیدمان متن نهایی را تعیین میکند. - ماندگاری کوئریها: کلیه مراحل و کدهای پاور
کوئری مستقیماً
داخل فایل اکسل ذخیره میشوند و نیازی به ارسال فایل یا کانکشن خارجی به همراه ورکبوک نیست.
۱۵.
جمعبندی نهایی جلسه اول
جلسه اول دوره پیشرفته اکسل و پاور کوئری، شالوده گذار از کاربری سنتی اکسل به مهندسی داده بود. از
پایپلاینهای
مقدماتی پاکسازی، ترنسپوز جداول افقی، گروهبندی و رفع خطاهای کیسسنسیتیو گرفته تا ساخت لیستهای
اعتبارسنجی پویا و
تفکیک پیشرفته متن، آموختیم که چگونه ساعتها کار طاقتفرسای هفتگی و ماهانه را با یک پایپلاین خودکار
جایگزین کنیم تا
با یک کلیک روی Refresh، تمام داشبوردها و گزارشهای مدیریتی بیدرنگ بهروزرسانی گردند.
۱۶.
خودآزمون سنجش یادگیری (تستی، کوتاهپاسخ و تشریحی)
۱. (تستی) اگر در ستونی از نوع Whole Number بخواهیم عدد ۱ را با حرف A با دستور Replace
Values جایگزین کنیم
چه اتفاقی رخ میدهد؟
الف) عدد ۱ بهدرستی تبدیل به A میشود.
ب) کل ردیفهای حاوی عدد ۱ با خطای قرمز (Error) مواجه میشوند.
ج) نرمافزار حرف A را نادیده گرفته و عدد ۱ باقی میماند.
د) پنجره پاور کوئری بسته میشود.
مشاهدهٔ پاسخ
پاسخ صحیح: گزینه (ب). زیرا تزریق کاراکتر
متنی درون
ستونی با جنس عددی خلاف قوانین تایپ داده در دیتابیس است و خطای مغایرت نوع رخ میدهد.
۲. (تستی) کدام دستور در پاور کوئری معادل ترکیب توابع MID و FIND در اکسل عمل
میکند؟
الف) First Characters
ب) Text Between Delimiters
ج) Trim
د) Clean
مشاهدهٔ پاسخ
پاسخ صحیح: گزینه (ب). دستور Text Between
Delimiters متن
محصور میان دو نماد را بدون نیاز به فرمولنویسی تودرتو استخراج میکند.
۳. (تستی) اگر کدی به فرمت TASK102 داشته باشیم، کدام دستور آن را به TASK و ۱۰۲ تفکیک
میکند؟
الف) Split Column by Delimiter Space
ب) Split Column by Digit to Non-Digit
ج) Split Column by Non-Digit to Digit
د) Extract Length
مشاهدهٔ پاسخ
پاسخ صحیح: گزینه (ج). دستور By Non-Digit
to Digit در
مرز تغییر از حروف غیررقمی به رقم تفکیک را انجام میدهد.
۴. (تستی) کدهای زبان اِم و مراحل ذخیرهشده پاور کوئری در کجا نگهداری میشوند؟
الف) در یک پوشه موقت در درایو C ویندوز.
ب) مستقیماً درون ساختار درونی خود فایل اکسل ذخیره میشوند.
ج) در سرورهای ابری مایکروسافت.
د) با بستن اکسل پاک میشوند.
مشاهدهٔ پاسخ
پاسخ صحیح: گزینه (ب). کلیه کوئریها درون
فایل اکسل
ذخیره شده و با ذخیره فایل (Ctrl+S) تثبیت میگردند.
۵. (کوتاهپاسخ) علامت # در انتهای آدرس سلول فرمول در اکسل ۲۰۲۱ به بعد چه مفهومی
دارد؟
مشاهدهٔ پاسخ
پاسخ: عملگر محدوده سرریز (Spill Range
Operator) برای ارجاع پویا به تمام سلولهای حاصل از یک تابع آرایهای.
۶. (کوتاهپاسخ) چرا در ابزار Merge Columns ترتیب انتخاب ستونها اهمیت دارد؟
مشاهدهٔ پاسخ
پاسخ: زیرا ستونی که ابتدا انتخاب شود به
عنوان بخش اول
متن ترکیبی و ستون بعدی به عنوان بخش دوم در سلول مقصد قرار میگیرد.
۷. (تشریحی) دیدگاه مدرس پیرامون چالش نامهای چندبخشی فارسی در زمان تفکیک با فاصله (Space)
چیست و مسئولیت
حل آن بر عهده کیست؟
مشاهدهٔ پاسخ
پاسخ: مدرس معتقد است نامهای چندبخشی ناشی
از ضعف فرآیند
گردآوری داده (Data Gathering) است و نباید انتظار داشت ابزارهای پاییندست
مانند پاور کوئری
تفاوت نام مرکب و فامیلی را حدس بزنند. راهحل اصولی وظیفه دفتر مدیریت پروژه (PMO) است تا در فرمهای
ورودی، نام و
نام خانوادگی را در دو فیلد کاملاً مجزا از کاربر دریافت کنند.
۸. (تشریحی) مراحل ساخت یک فهرست کشویی هوشمند (Data Validation) را با استفاده از پاور کوئری
شرح
دهید.
مشاهدهٔ پاسخ
پاسخ:
۱) فراخوانی جدول به پاور کوئری و نگهداشتن ستون هدف با Remove Other Columns.
۲) یکدستسازی حروف با Capitalize Each Word و حذف اقلام تکراری با
Remove Duplicates.
۳) مرتبسازی الفبایی با Sort Ascending و بارگذاری جدول در یک شیت مجزا.
۴) انتخاب سلول هدف در اکسل، باز کردن پنجره Data Validation، انتخاب حالت List و معرفی محدوده دیتای
جدول کوئری به
عنوان منبع.
