فرض کنید موضوعی مشابه این از شما خواسته میشود:
در یک فاکتور فروش، کد داروی خریداری شده وارد میشود و در مقابل آن، شما باید مبلغ آنرا با شرط زیر وارد کنید: اگر این دارو در بین داروهای قابل قبول توسط بیمه بود، مثلاً نصف قیمت درج شود و اگر در لیست داروهای بیمهای نبود، قیمت کامل آن درج شود.
برای درک بهتر، این پروژه را دانلود کنید.
همانطور که در تصویر بالا میبینید، یک شیت داریم که در آن همه داروها موجود است و در شیت insurance کد داروهایی که جزء خدمات بیمه هستند.
ما در ستون «قیمت واحد» در شبت فاکتور (bill) باید ابتدا بررسی کنیم که کد داروی وارد شده آیا در شیت insurance موجود است یا خیر. اگر بود، قیمت واحد را (که در شیت all_drugs و مقابل نام هر دارو است) تقسیم بر دو میکنیم وگرنه که همان قیمت را درج میکنیم.
به هر حال، برای بررسی اینکه یک مقدار در یک محوطه موجود است یا خیر و اگر بود، یک عملیات و اگر نبود، عملیات دیگری انجام دهیم، ساختار کلی زیر کمک خواهد کرد:
=IF(ISNA(VLOOKUP(value , range , column_number)) , "do something" , "do something else")
مثلاً من در ستون قیمت واحد، نوشتهام:
=IF(ISNA(VLOOKUP(A3,insurance!$A$1:$A$2,1)),VLOOKUP(A3,all_drugs!$A$1:$C$3,3),VLOOKUP(A3,all_drugs!$A$1:$C$3,3)/2)
این فرمول میگوید بررسی کن که آیا مقدار وارد شده در A3 در ستون شماره 1 از شیت insurance موجود است یا خیر. اگر موجود بود، مقدار آنرا از all_drugs بخوان و تقسیم بر 2 کن و درج کن وگرنه بدون تقسیم بر دو آنجا درج کن.
تابع VLOOKUP اگر مقدار را پیدا نکند، N/A برمیگرداند. ما با ISNA میفهمیم که جواب N/A است یا خیر. اگر N/A بود یعنی نیست پس مقدار کامل را درج میکند و اگر چیزی جز N/A باشد یعنی موجود است، پس تقسیم بر دو میکند و بعد درج میکند.
موفق باشید؛
حمید رضا نیرومند