ترکیب توابع با تابع 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 رو به صورت حرفه ای شروع کردم.

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

    سلام و عرض ادب
    میشه توی تابع vlookup از تابع sum استفاده کرد؟؟
    اگه میشه چطوری

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

      درود
      ترکیب توابع کلا امکان پذیره
      سوالتون و بفرماییدتا مشخص بشه منظورتون چیه

    • hadi ۲۱ بهمن ۱۴۰۳ / ۸:۱۵ ق٫ظ

      گمونم از فرمول sumif میتونید استفاده کنید

  • Rinatad ۲ مهر ۱۳۹۹ / ۱۲:۱۱ ب٫ظ

    با سلام
    وقتی از تابع vlookup استفاده می کنیم سلول مورد نظر که پیدا می شود دیگر دنبال همان محتوای قبلی نمی گردد که اگر چند بار کد ملی مورد نظر تکرار شده باشد فقط اولی را پیدا می کند و ادامه به سرچ نمی دهد
    سوال من اینکه چه فرمولی با vlookup باید ترکیب کرد تا چند دفعه یه ستون را سرچ کند برای یک کدملی ؟؟؟؟؟؟؟؟

    • سامان چراغی ۲۲ دی ۱۳۹۹ / ۳:۴۳ ب٫ظ

      سلام
      تابع Vlookup فقط اولین موردی که پیدا کنه به شما نمایش میده و دیگه متوقف میشه. برای انجام این کار دو راه دارید:
      ۱- استفاده از Pivot Table
      ۲- ترکیب توابع Index و Match
      میتونید مقاله جستجو موارد تکراری رو هم مشاهده کنید.

  • محمدرضا ۱۰ مرداد ۱۳۹۹ / ۴:۱۸ ب٫ظ

    سلام
    من یه جدول دارم، متشکل از کد پرسنلی اسم نسبت(اصلی خود شخص، همسر، فرزند دختر یا پسر، پدر، مادر)
    میخوام گزارشی بگیرم از این جدول که وقتی کد پرسنلی رو وارد میکنم نام تمام افراد تحت تکفل شخص بیاد

    • سامان چراغی ۱۰ مرداد ۱۳۹۹ / ۶:۴۸ ب٫ظ

      کامنت شما در آدرس Vlookup از چند شیت یا فایل پاسخ داده شده.

  • محمد ۱۰ اسفند ۱۳۹۸ / ۱۱:۴۴ ب٫ظ

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

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

      درود
      بستگی به ساختار و شرایط داده ها داره
      ولی اولین تابع رو vlookup امتحان کنید
      ببینید با خواسته شما هماهنگی داره یا نه

    • سامان چراغی ۱۱ اسفند ۱۳۹۸ / ۱۰:۳۳ ق٫ظ

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

    • نسترن الهی ۲۴ فروردین ۱۳۹۹ / ۳:۲۹ ب٫ظ

      سلام خسته نباشید
      من یه شیت اصلی دارم که لیست کالا ها رو بهم نشون میده و دوتا شیت دیگه دارم که سوابق خرید و فروش برای هر ردیف کالا رو نشون میده میخوام با تغییر تو لیست خرید یا فروشم شیت اصلی اپدیت بشه مثلا اگر من محصول جدیدی رو به شیت خریدم اضافه میکنم به شیت اصلی هم اضافه بشه ممنون میشم راهنمایی کنید که امکان چنین کاری وجود داره و به چه صورت ؟

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

        درود
        امکان که وجود داره ولی خیلی بستگی به شرایط و جزئیات داره. بهترین روشش استفاده از VBA هست
        اما پیشنهاد میکنم روش کار و ذخیره داده رو تغییر بدید که بهتر بتونید با ابزارها و فمرول نویسی این مدیریت رو انجام بدید.

  • پریا ترابی ۲۰ بهمن ۱۳۹۸ / ۷:۵۹ ب٫ظ

    با عرض سلام و ادب ممنون از پاسخ شما به خاطر سوال اولم
    و اما سوالی دیگری از خدممتون دارم و اون اینه که فرض کنید یه ستون مربوط به آیدی خانوار دارم و یه ستون اطلاعات مرگ و میر کودکان است می خوام محرومیت خانوار رو از نظر مرگ و میر کودکان بررسی کنم. امکان داره خانواری ۳ بچه داشته باشه که هیچ کدوم نمرده باشند و در کل پس خانوار محروم نیست ولی در حالت دوم امکان داره خانواری دارای ۳ فرزند باشه که مثلا یکیشون مرده و دوتای دیگه فوت نکردن. در خانوار حالت اول با remove duplicates مشکل حل میشه و رکورد تکراری از بین میره و به راحتی میبینیم که خانوار محروم نیس چون اطلاعات تکراری برای اون خانوار از بین رفته ولی برای حالت دوم چطور می تونم رکوردی را بگیرم که اگه خانوار حتی ۱ فرزند فوت شده داشته باشه اونو به صورت محروم بهم نشون بده. ممنون میشم اگه راهنماییم کنید.

    • سامان چراغی ۲۴ بهمن ۱۳۹۸ / ۶:۵۹ ب٫ظ

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

  • siavash ۱۸ بهمن ۱۳۹۸ / ۵:۵۷ ب٫ظ

    سلام وقتتون بخیر

    من یک فایل خروجی دارم از تمام کالای های موجود در بازار که بر اساس تاریخِ هر روز، در یک شیت اکسل جمع آوری میشه و شامل قیمت تمام شده، ارزش بنیادی، درصد تغییر قیمت، نسبت خرید به فروش و ….. میباشد.
    (یعنی از هر اسم کالا چندین و چند سطر وجود داره که اطلاعات مربوط به اون کالا در تاریخِ بخصوص رو نشون میده)

    حالا من میخوام در یک شیت جداگانه با فرمول نویسی ای که انجام میدم با نوشتن اسم یکی از کالاها تمام اطلاعاتشونو در همه روز های گذشته ببینم.
    ممنون میشم در صورت امکان انجام این کار کمکم کنید

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

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

  • سیاوش ۱۸ بهمن ۱۳۹۸ / ۵:۵۳ ب٫ظ

    سلام وقتتون بخیر

    من یک فایل خروجی دارم از تمام کالای های موجود در بازار که بر اساس تاریخِ هر روز، در یک شیت اکسل جمع آوری میشه
    (یعنی از هر اسم چندین و چند سطر وجود داره که اطلاعات مربوط به اون کالا در تاریخ بخصوص رو نشون میده)

    حالا من میخوام در یک شیت جداگانه با فرمول نویسی ای که انجام میدم با نوشتن اسم یکی از کالاها تمام اطلاعاتشونو در همه روز های گذشته ببینم.
    ممنون میشم در صورت امکان انجام این کار کمکم کنید

  • پریا ترابی ۱۸ بهمن ۱۳۹۸ / ۱:۵۰ ق٫ظ

    با عرض سلام من یه حجم زیادی داده در یک جدول دارم که ستون اول نمایانگر آیدی خانوارهاست و ۶ ستون دیگر نشان دهنده معلولیت های مختلف خانوار است. چه طور می تونم برای هر خانوار اگر معلولیت داره تعداد معلولیت ها رو بشمرم؟

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

      درود بر شما
      توابع شمارش counta و countif هست
      اما ظاهرا ساختار دیتابیس مناسبی ندارید برای این کار
      باز هم شاید لازم باشه بیشتر راجع به داده ها توضیح بدید

  • مینا ۱۰ آبان ۱۳۹۸ / ۱:۵۲ ب٫ظ

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

    • سامان چراغی ۱۰ آبان ۱۳۹۸ / ۷:۴۹ ب٫ظ

      سلام
      بله در این حالت به جای استفاده از تابع Column بهتره از تابع Match استفاده کنید که مشخص کنید موردی که از لیست انتخاب میکنید در چندمین ستون جدولی که در Vlookup تعیین شده قرار داره.

  • فرشید شیرکوند ۲۵ مهر ۱۳۹۸ / ۱۱:۳۰ ق٫ظ

    سلام.وقت بخیر
    من یک جدولی دارم که آماد تولیدی اپراتورها رو میخوام ثبت کنم.
    یک اپراتور ممکنه در طول روز سایزهای مختلفی رو تولید کنه. مثلا
    حمید ۲ اینچ ۱۵ عدد
    بهروز ۱/۵ اینچ ۳۰ عدد
    رضا ۳ اینچ ۲۰ عدد
    حمید ۴ اینچ ۱۷ عدد
    احمد ۰٫۵ اینچ ۳۵ عدد
    حمید ۱ اینچ ۴۰ عدد
    بهروز ۱ اینچ ۳۶ عدد
    حالا اگه بخوام یه فرمولی بنویسم که حمید رو پیدا کن و تولید هر سایز رو در زمان مصوب تولیدی اش ضرب کن چه فرمولی باید استفاده کنم؟
    پرکردن و ثبت اطلاعات هم به گونه ای هست که امکان این وجود نداره آمار نفرات مرتب کنار هم ثبت بشه.
    چون در طول روز و در زمانهای مختلف آمار نوشته می شود

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

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

ارسال دیدگاه

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