5/5 - (4 امتیاز)
If statement  (دستور if) در Power Query با فرمول if در اکسل کمی متفاوت است ولی اگر شروع به نوشتن آن کنید، هیچ موضوع پیچیده ای ندارد. در حقیقت، ورژن های if or و if and حتی آسانتر از معادل های اکسل آن است.

نکته: در این مطلب فرض شده است که شما با نوشتن تابع if ، if(or) ,if(and) در اکسل آشنا هستید. اگر با نحوه نوشتن اینگونه فرمول های آشنایی ندارید میتوانید به  IF formulas و IF(OR and IF(AND formulas و همچنین در اینجا فرض شده است که با load کردن داده در power query و اضافه کردن custom column آشنایی دارید. در غیر اینصورت میتوانید به مطالب زیر مراجعه کنید و آنها را یاد بگیرید:

تابع if در اکسل | مثال ها و کاربردها

تابع IF اکسل همراه با شرط های And/or چندگانه در اکسل، if های تو در تو و غیره

اضافه کردن یک ستون در پاور کوئری

شروع کار با مجموعه get&transform (پاور کوئری) در اکسل ۲۰۱۶

حال، به بررسی مثال میپردازیم:

در زیر داده های مربوط به سفارشات را در power query در اختیار داریم:

دستور if در power query

میخواهیم یک ستون با نام ” وضعیت تحویل(Delivery Status)” اضافه کنیم تا وضعیت تحویل کالا به مشتری را نشان دهد.

منطق این ستون به این شکل است که ؛ اگر سلول مربوط به تاریخ تحویل خالی نباشد، به این معنی است که کالا تحویل داده شده است.

دستور if در power query

در پنجره Add column بر روی Conditional Column کلیک کنید. دیالوگ باکس که در زیر مشاهده میکنید باز میشود. این باکس از یک منو ساده برخوردار است که به شما در نوشتن دستور if کمک میکند (نکته: در power query، کلمه “null” به معنای خالی است)

دستور if در power query

توجه کنید که چگونه میتوان سطر if را در دیالوگ باکس خواند و آیا این سطر به انگلیسی صحیح است یا خیر؟

پس از آن که ok را کلیک کردید، یک ستون برای وضعیت تحویل ایجاد میشود.

دستور if در power query

و اگر کد M  را در Advanced editor بررسی کنید، مشاهده میکنید که فرمول زیر برای شما نوشته شده است (قسمت آبی رنگ)

دستور if در power query

متاسفانه، برای هر سناریو if نمیتوانید از conditional column(ستون شرطی)  استفاده کنید. در بعضی مواقع میبایست از از دیالوگ باکس Add Custom Column که در مثال بعد توضیح داده خواهد شد استفاده کنید و آن را خودتان بنویسید. در این موارد می بایست از تفاوت های کلیدی بین دستور if در اکسل آگاهی داشته باشید:

  • در power query، if به صورت حروف کوچک است.
  • به جای استفاده از کاما برای جداسازی value_if_true و value_if_false  از کلمات than  و else استفاده کنیم.
  • در power query، null به معنای خالی است.
  • فرمول های power query نسبت به حروف بزرگ و کوچک حساس هستند.

دستورات if or در power query

متوجه شدید که ، در مثال بالا، به مشتریان اجازه مراجعه به فروشگاه و خرید سفارشات خود را نمیدهد؟ این نوع سفارشات “خرید درون فروشگاهی ” نام دارند(خرید کالا بدون سفارش دادن آن و خرید مستقیم از فروشگاه).

دستور if در power query

بنابراین، در اینجا می بایست از دستور if or استفاده کرد.

منطق این دستور به صورت فارسی به این شکل است: اگر ستون تاریخ تحویل خالی نباشد، یا، نوع سفارش ” درون فروشگاهی ” باشد، آنگاه سفارش کامل شده است.

متاسفانه، GUI (راهنما) مناسب برای کمک به ما در نوشتن دستور if or وجود ندارد، بنابراین در این مورد، از دکمه Add Column > Add Custom Column استفاده میکنیم:

دستور if در power query

دیالوگ باکس باز میشود و شما می بایست نامی برای ستون خود انتخاب کنید و فرمول خود را در قسمت ‘Custom column formula:’ وارد کنید.

دستور if در power query

فرمول را به صورت دقیقتر بررسی کنید:

if  [Delivery Date] <> null or  [Order Type] = “In Store Pickup”  then “Completed” else null

فر مول بالا به صورت فارسی به شکل زیر خوانده میشود:

اگر تاریخ تحویل خالی نبود، یا نوع سفارش ” درون فروشگاهی” است، مقدار ‘Completed’ را برگردان، در غیر اینصورت سلول خالی نگه داشته شود.

هر کدام از آزمون های منطقی بوسیله ‘or’ تفکیک میشود. خیلی آسان و ساده بود.

دستور if and در power query

دستور if and نیز بسیار آسان است. مثال زیر در مورد حقوق و دستمزد کارکنان را در نظر بگیرید:

دستور if در power query

میخواهیم یک ستون اضافه کنیم که میزان پاداش برای کارکنان اجرایی را محاسبه کند.

منطق دستور به صورت فارسی به شکل زیر است:

اگر level، برابر با executive و target met برابر با yes باشد، آنگاه پاداش را به صورت salary*0.05 محاسبه کن در غیر اینصورت پاداش برابر با صفر.

مثل دستور if or، می بایست از Add Column > Add Custom Column برای وارد کردن فرمول استفاده کنیم:

if [Level] = “Executive” and [Target Met] = “Yes” then [Salary] * .05 else 0

حال، میتوانید نتایج را در ستون پاداش(bonus) زیر مشاهده کنید:

دستور if در power query

صبر کنید، در مورد پاداش مدیران چه باید کرد؟ در حقیقت، مدیران در صورت انجام کار خود 10 درصد پاداش میگیرند.

ما میتوانیم با استفاده از if های تو در تو دو سطح پاداش را در نظر بگیریم.

دستور if تو در تو در power query

با استفاده از همان داده های نمونه، دستور ما به فارسی به این صورت میشود:

اگر، level برابر با executive باشد و target met برابر با yes باشد، آنگاه پاداش را به صورت salary*5% محاسبه کن در غیر اینصورت، اگر level برابر با manager باشد، و target met برابر با yes باشد، آنگاه پاداش به صورت salary*10% محاسبه شود، در غیر اینصورت پاداش برابر با صفر

فرمول به شکل زیر خواهد بود:

if [Level] = “Executive” and [Target Met] = “Yes” then [Salary]*.05 else

if [Level] = “Manager” and [Target Met] = “Yes” then [Salary]*.10 else 0

نکته کلیدی این است که دستور if بعدی را بعد از else قرار دهیم. من فرمول را در دو سطر قرار دادم تا خواندن if های تو در توی آنا آسان باشد. شما میتوانید بعد از هر else ، if های بیشتری قرار دهید.

 

[/vc_column_text][/vc_column][/vc_row]

فیلم و دوره رایگان آموزش پاور کوئری در اکسل و پاور بی آی

مشترک شدن
Notify of
guest

2 نظرات
نظردهی درون متنی
مشاهده همه نظرات
بهروز

سلام استاد
خسته نباشید تشکر از آموزش بسیار مفیدتان
یک مشکلی من دارم و اون نداشت آیتم Conditional Column در power query من وجود ندارم و اکسل من هم 2016 میباشد

امیر دایی

بعضی از قابلیت ها توی نسخه های بالاتر اکسل اضافه شده.
اگر یک ویژگی رو ندارید یا باید نسخه موجود را به روز کنید یا نسخه های بالاتر مثل 2019 یا 2021 نصب کنید.