ترکیب توابع با تابع Vlookup در اکسل

ترکیب توابع با تابع Vlookup
۵/۵ - (۱۱ امتیاز)

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

  1. مقایسه خروجی تابع Vlookup با یک عبارت مشخص

یکی از بیشترین مسائلی که از ترکیب توابع IF و Vlookup داریم، این هست که خروجی Vlookup رو با یک عبارت مشخص مقایسه میکنیم و خروجی بله/خیر یا غلط/درست  و … رو نمایش میدیم. ساختار کلی این مسئله بصورت زیر هست:

IF(VLOOKUP(…) = sample_value, TRUE, FALSE) 

مثال اول-مقایسه خروجی Vlookup با یک مقدار مشخص

 فرض کنید لیستی از محصولات به همراه موجودی اونها رو داریم. میخوایم محصولی رو انتخاب کنیم و اگر موجودی اون محصول صفر بود، بگه در انبار نیست.

=IF(VLOOKUP (E1; A1:B10; 2; 0) =0; بله” ;  “خیر )

 مقایسه خروجی Vlookup با یک مقدار مشخص

شکل ۱- مقایسه خروجی Vlookup با یک مقدار مشخص

مثال دوم- مقایسه خروجی  Vlookup با یک سلول دیگه

فرض کنید میخوایم میزان فروش محصول مورد نظر رو با بیشترین فروش (که در یک سلول دیگه هست) مقایسه کنیم:

=IF ( VLOOKUP(E1;A1:B10;2;0 ) = E9 ;بله” ;  “خیر)

 مقایسه خروجی Vlookup با یک سلول دیگه

شکل ۲- مقایسه خروجی Vlookup با یک سلول دیگه

 مثال سوم- جستجو در یک لیست کوچکتر-مقایسه دو لیست

فرض کنید میخوایم دو لیست رو با هم مقایسه کنیم. اگر داده های جدول در لیست دوم وجود داشت، کلمه “وجود دارد” رو نمایش بده. اگر هم وجود نداشت، کلمه “وجود ندارد” رو نشون بده.

=IF ( ISNA ( VLOOKUP(A2;$D$2:$D$4;1;0) ) ; “وجود دارد” ; “وجود ندارد” )

تابع Vlookup در صورتی که داده مورد نظر رو پیدا نکنه،#N/A هست. پس با تابع ISNA چک میکنیم که آیا خروجی تابع Vlookup خطا هست یا نه. اگر خطا بود، یعنی وجود نداشته پس عبارت “وجود ندارد” را نمایش خواهد داد.

  مقایسه دو لیست

شکل ۳- مقایسه دو لیست با استفاده از ترکیب توابع با تابع Vlookup

  1.  ترکیب تابع Vlookup با IF برای اعمال محاسبات مختلف

میتونیم خروجی تابع Vlookup رو بررسی کنیم و یک سری محاسبات روش انجام بدیم.

فرض کنید میخوایم پورسانت فروشنده ها رو بر اساس میزان فروششون حساب کنیم. شرایط به این صورت است که هر نفر، فروش بیش از ۳۰۰ داشته باشد، بیست درصد و در غیر اینصورت ده درصد پورسانت دریافت خواهد کرد.

=IF(VLOOKUP(D2,A2:B9,2,0)>=300,0.2*VLOOKUP(D2,A2:B9,2,0),0.1*VLOOKUP(D2,A2:B9,2,0))

انجام عملیات مختلف روی خروجی تابع Vlookup

شکل ۴- انجام عملیات مختلف روی خروجی تابع Vlookup

  1. ترکیب توابع با تابع Vlookup برای کنترل خطای #N/A

IF(ISNA(VLOOKUP(…)), “عبارت مورد نظر”, VLOOKUP(…)) 

اگر تابع Vlookup داده مورد جستجو رو پیدا نکنه، با خطای #N/A مواجه میشیم. یکی از راه های کنترل این خطا استفاده از تابع منطقی ISNA با IF هست.

=IF(ISNA(VLOOKUP(D2,A2:B9,2,0)),“موجود نیست”,VLOOKUP(D2,A2:B9,2,0))

 کنترل خطای تابع Vlookup

شکل ۵- کنترل خطای تابع Vlookup

این تابع چطور کار میکنه؟

خروجی تابع ISNA، True یا False هست. اگر تابع Vlookup با خطا مواجه بشه، خروجی تابع IFNA(Vlookup(….) مقدار True خواهد بود و عبارت “موجود نیست” رو نمایش میده. در غیر اینصورت خروجی ISNA(Vlookup(…) مقدار False خواهد بود که نتیجه خود تابع Vlookup رو بر میگردونه. در اینجا چون “خرمی” در لیست وجود نداره، با خطا مواجه میشه و نتیجه “موجود نیست” نمایش داده میشه. به تصویر زیر دقت کنید.

این کار رو توابع دیگه هم انجام میدن. توابعی مثل IFNA، Iferror، Iserror و If(Iserror). جهت مطالعه بیشتر نحوه مدیریت خطا، مقاله مدیریت خطا در اکسل رو مطالعه کنید.

  1. استفاده از Match و Index بجای Vlookup

خیلی از کاربران اکسل معتقدند که تابع Vlookup تنها راه جستجوی عمودی در اکسل نیست و میتونیم این کار رو با توابع index و Match هم انجام بدیم. به مثال زیر توجه کنید:

=IF (ISERROR (INDEX ( B2:B9, MATCH (D2,A2:A9,0),1)) ,“”, INDEX (B2:B9, MATCH(D2,A2:A9,0),1))

استفاده از Index و Match بجای vlookup

شکل ۶- استفاده از Index و Match بجای Vlookup (ترکیب توابع با تابع Vlookup)

همونطور که در مثال بالا می بینید، بجای استفاده از Vlookup از ترکیب Match و Index برای پیدا کردن فروشنده مورد نظر استفاده کردیم. این فرمول چطور کار میکنه؟

تابع Match به ما میگه که موردی که جستجو میکنیم چندمین سلول از محدوده مورد نظر هست. خروجی تابع Match (که عدد هست) به عنوان آرگومان شماره ردیف در تابع index استفاده میشه. اگر هم داده مورد نظر رو پیدا نکنه خروجی Match بصورت #N/A خواهد بود و ما برای مدیریت خطا از تابع Iserror استفاده کردیم.

به تصویر زیر دقت کنید و نحوه عملکرد ترکیب این دو تابع رو ببینید.

 

در این مقاله ترکیب توابع با تابع Vlookup رو دیدیم. اینکه چطور میتونیم این تابع رو با if ترکیب کنیم و نتایج متنوعی رو داشته باشیم. همونطور که قبلا گفتیم، یکی از راه های حرفه ای شدن در اکسل توانایی در ترکیب توابع و گرفتن خروجی های متنوع هست. برای آشنایی بیشتر با نحوه مدیریت خطا در اکسل، دیباگ کردن فرمول، آشنایی با تابع Index و Match مقالات مرتبط با این موضوعات رو در سایت مطالعه کنید.

134

من سامان چراغی هستم. دانش آموخته مقطع فوق لیسانس دانشگاه تربیت مدرس در رشته مهندسی صنایع. از سال 1388 اکسل و برنامه نویسی VBA رو به صورت حرفه ای شروع کردم.

دیدگاه کاربران
  • محسن ۱ مهر ۱۳۹۸ / ۳:۲۷ ب٫ظ

    با سلام و تشکر از شما
    آیا میتوان با ترکیب دستور IF و vlookup اگر سلولی دارای ۲ شرط بود نتیجه را برگرداند ؟ به عنوان مثال:اگر نام شخص علی و نام خانوادگی او اکبری بوده امتیاز اور را برای ما پیدا کند
    نام نام خانوادگی امتیاز
    علی اکبری ۲۰
    علی احمدی ۳۰

    • آواتار
      حسنا خاکزاد ۳ مهر ۱۳۹۸ / ۱۱:۴۳ ق٫ظ

      درود بر شما
      اگر نخواید پشت سر هم بیاد میتونید با if و and انجام بدید بدون نیاز به vlookup
      اما اگر مهمه که پشت سر هم لیست بهش باید از فرمول نویسی آرایه ای استفاده کنید که بتونه چند شرط رو بررسی کنه

  • حسام ۳۱ شهریور ۱۳۹۸ / ۱۱:۴۷ ق٫ظ

    با سلام و وقت به خیر
    دو تا شیت داریم در یک شیتA نام محصول و مقدار ریالی آن هست و در شیت دیگر Dچندین ستون داریم که هر ستون مربوط به افرادی است مثلا ستون b تا ستون FF ک مربوط به ۱۰۰ نفر می باشدهمچنی هر سلول نشان دهنده یک روز است و در هر روز فرد مربوطه مثلا b یک خرید دارد و در آخر ماه ما می خواهیم با یک فرمول جمع تمام خریدهای مرتبط با شیت A (که در شیت A قیمت ریالی آن موجود هست )با هم جمع بسته شود و زیر ستون b نوشته شود
    لطفا فرمول آن راهنمایی فرمایید
    با تشکر

    • آواتار
      حسنا خاکزاد ۱۴ آذر ۱۳۹۸ / ۶:۲۶ ب٫ظ

      درود بر شما
      سوال خیلی گنگه
      ولی اگه میخواید داده های مربوط به یک شرط رو جمع بزنید، از تابع sumif استفاده کنید

  • رضائي ۱۵ تیر ۱۳۹۸ / ۱۱:۴۲ ق٫ظ

    من دریک فایل اکسل ۲ شیت دارم. در شیت اول اسامی ۱۵۰۰ نفر پرسنل چند شرکت معرفی شده برای یک سمینار هستش که بر اساس کدپرسنلی نوشته شده و در شیت دوم اسامی حاضرین واقعی در سمینار بر اساس کد پرسنلی است . الان من میخواهم با فرمولی در مقابل لیست اولم ( مدعوین ) بر اساس لیست دوم ( حاضرین واقعی ) حاضر و غایب زده شود تا بدانم کدام نفرات معرفی شده از سمینار غایب بودند . از چه فرمول یا فرمولهایی استفاده کنم و نحوه نوشتن آن فرمولها چگونه است ؟

    • آواتار
      حسنا خاکزاد ۲۴ تیر ۱۳۹۸ / ۲:۵۵ ب٫ظ

      درود بر شما
      لینک زیر رو مطالعه کنید

  • صابر ۱۵ تیر ۱۳۹۸ / ۷:۵۱ ق٫ظ

    با سلام سپاس از شما بابت مطاب کاربردی
    یه سوال داشتم. من از تابع vlookup استفاده کردم و فایل رفرنس در پوشه ای هست که برای سایر همکاران Share شده. اما وقتی همکاران از اون فایل استفاده می کنن اطلاعات رو بر نمی گردونه. من چجوری میتونم از این فرمول برای اکسلی که تو پوشه اشتراکی هست استفاده کنم

  • محمد ۲۹ خرداد ۱۳۹۸ / ۹:۳۴ ق٫ظ

    سلام
    با تشکر از آموزش خوبتون
    من یه فرم دارم که باید تعداد چند فعالیت در اون ثبت بشه. کد اصلی من در این فرم کد استان می باشد . هر کد استان چند کد شهر زیر مجموعه داره. شیت مربوط به فعالیت ها فقط کد شهر داره و این کار منو سخت کرده . من باید فعالیت A را در شهر ها با کد شهر جستجو کنم و با کمک کد استان در فرمم وارد کنم

    • آواتار
      حسنا خاکزاد ۲۹ خرداد ۱۳۹۸ / ۱۰:۰۹ ق٫ظ

      درود بر شما
      سوالتون واضح نیست
      ظاهرا راه حل رو میدونید. مشکل کجاست؟

  • سما ۲ خرداد ۱۳۹۸ / ۱۰:۲۹ ق٫ظ

    سلام
    من نیاز به فرولی دارم در اکسل که در یک ستون که شامل چند اسم است،بگرده و هر اسمی رو با کد خودش که در شیت درگری هست جایگزین کنه.

    • آواتار
      حسنا خاکزاد ۴ خرداد ۱۳۹۸ / ۱۰:۳۴ ق٫ظ

      درود بر شما
      از تابع Vlookup استفاده کنید

  • احمد پسندیده ۱۰ اردیبهشت ۱۳۹۸ / ۸:۴۷ ق٫ظ

    سلام چطور میتونم در ورک شیتی که ستونهای اون تاریخ و سطرهای اون اسم کالا هست داده متناظر با آخرین روز مربوط به یک کالای خاص رو با تابع vlookup استخراج کنم.

    • آواتار
      حسنا خاکزاد ۱۰ اردیبهشت ۱۳۹۸ / ۱۲:۲۰ ب٫ظ

      درود بر شما
      کاملا بستگی به جنس تاریخ و نحوه چینش داده ها داره

  • علی ۲۱ فروردین ۱۳۹۸ / ۱۱:۰۶ ق٫ظ

    سلام
    خسته نباشید
    یک فایل اکسل دارم با ۲ شیت که برای هر دو شیت ستون اول شماره درخواست،ستون دوم کد کالا و ستون سوم تعداد درخواست می باشد که ممکن است برای یک شماره درخواست یکسان چندین کد مختلف با تعداد متفاوت ثبت شده باشد
    سوال:
    اگر بخوام از شیت a ردیفی که شماره درخواست ۱ با کد ۱۰۰ ثبت شده مقدار درخواست را از شماره درخواست ۱ با کد ۱۰۰ از شیت b بردارم چیکار کنم
    این را مدنظر داشته باشید احتمال این که برای مثال درخواست ۱ شامل چند کد در ردیفهای مختلف باشد هست
    ممنون

    • آواتار
      حسنا خاکزاد ۲۱ فروردین ۱۳۹۸ / ۶:۴۰ ب٫ظ

      درود بر شما
      اگر درست متوجه شده باشم، نیاز به فمرول نویسی آرایه ای دارید که هم دو شرطی بودن رو حل کنه و هم تکراری بودن.
      اگر فایل سنگین نمیشه و میتونید، منطق آرایه ای رو سرچ کنید و فرمول نویسی آرایه ای رو یاد بگیرید.

  • فرزانه ۱۷ فروردین ۱۳۹۸ / ۱۲:۰۷ ب٫ظ

    ممنونم بزرگوار. بله از همنی طریق مقاله ای که فرستادین انجام دادم و درست میشه ممنوم ازتون. ۱سوال دیگه دارم فقط: وقتی درشیت اصلی شماره فاکتور جدید را بااطلاعاتش چاپ میکنم چجوری میتونم در شیت چاپ شماره فاکتور جدید را بدم و اطلاعاتش جدید بشه؟؟؟ منظورم اینه که وقتی در شیت اصلی ردیفهای جدید اضاف میشه چجطوری تواین شیت واردمیکنه؟؟؟ نمیخوام حالت اختصاصی همون ردیف اولم باشه و مجددا هم فرمول واردنکنم .ممنونم

  • فرزانه ۱۷ فروردین ۱۳۹۸ / ۱۰:۵۴ ق٫ظ

    سلام. میخوام فاکتورفروش چاپ کنم که بازدن شماره فاکتور، همه فیلدهای اون مثل شرح کالا، کدکالا، تعداد، قیمت و… را از توشیت قبلیش بخونه وبیاره اینجابشونه چطوری میتونم با vlook up انجام بدم

    • آواتار
      حسنا خاکزاد ۱۷ فروردین ۱۳۹۸ / ۱۱:۴۴ ق٫ظ

      درود بر شما
      کافیه در یک شیت همه اطلاعات رو با شماره فاکتور ثبت کرده باشید
      بعد با vlookup مقادیر مرتبط رو در فاکتور فراخوانی کنید.
      lookup value شما میشه شماره فاکتور

      مقاله زیر رو بخونید
      https://excelpedia.net/vlookup-function/

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *