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

دیدگاه کاربران
  • مرتضی ۲۹ بهمن ۱۳۹۷ / ۱:۵۶ ب٫ظ

    سلام و خسته نباشید
    میخوام یک کد رو جستجو کند و تمام کد های تکرار آن را چاپ کند ؟

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

      درود بر شما
      یا باید از ستون کمکی استفاده کنید و شماره بزنید موارد یونیک رو. بعد شماره ها رو جستجو کنید.
      یا از فرمو لنویسی آرایه ای استفاده کنید:

      =index(A1:D100,small(if(A1:A100="code21",row(A1:A100),""),row(A1)),2)

      فرمول نویسی آرایه ای:
      https://excelpedia.net/array-formula/

  • mehrdad ۱۵ بهمن ۱۳۹۷ / ۲:۱۵ ب٫ظ

    درو بر شما ادمین های گرامی
    یه سوال داشتم در مورد ترکیب vlookup و if. من میخوام از یک جدول عبارتی (کد یا نام شخصی) رو سرچ کنم و کلیه اطلاعات تو ردیف اون کد یا شخص رو برام تو جدول دیگه بیاره

  • محمد علی ۲۷ آبان ۱۳۹۷ / ۱۱:۴۷ ق٫ظ

    با عرض سلام وادب من می خوام از vlookup استفاده کنم ودوشرط و جود داشته باشه یعنی در فرمول گفته میشه من دنبال محتویات سلولA1 هستم بشرطی که سلول نظیر b1 هم باهم برابر باشه. می خوام در مرحله اول جستجو ۲ گزینه رو بررسی کند. ممکنه بنده رو راهنمایی کنید. این در مورد چند سری فاکتور هست که کالاهای مشترک دارند و میخوام با اطلاعات مشابه اون مقایسه بشود.

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

      درود بر شما
      یک راه استفاده از ستون کمکی و چسباندن این دو شرط به هم هست.
      راه دیگه استفاده از فرمول نویسی آرایه ای که باید از Choose استفاده کنید به صورت زیر.
      Ctrl+Shift+Enter فراموش نشه

      =vlookup(A1&B1, choose({1,2},D1:D10&C1:C10,E1:E10), 2, 0)
      
      • حمیدرضا ۱۸ خرداد ۱۳۹۸ / ۴:۵۷ ب٫ظ

        سلام وقت بخیر
        دقیقا من همین مشکل رو دارم و از همین فرمول استفاده کردم ولی بازم N/A میده

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

          درود بر شما
          ctrl+shift+enter حتما باید بزنید
          فرمول آرایه ای هست
          جداکننده ها رو هم دقت کنید

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

            اوکی ممنون
            فقط فرمول آرایه ای چی هست؟

    • محمد ۱۶ آذر ۱۳۹۷ / ۸:۵۵ ب٫ظ

      ممنون از
      خانم خاکزاد برای پاسختون

  • میلاد ۲۶ آبان ۱۳۹۷ / ۵:۲۳ ب٫ظ

    سلام.من یه راهنمایی می خواستم.من تو اکسل با استفاده از ,Vlook و یا Match ,Index یه داده را فراخوانی می کنم.چطوری میتونم چند تا جواب داشته باشم؟ خیلی جستجو کردم.همیشه اولین جوابو بهم میده این فرمول ها.من لیست جواب های Vlook را میخوام.چند جواب داشته باشه Vlook من.

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

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

      =index(B1:B100,small(if(A1:A100=D1,row(A1:A100),""),row(A1))
      

      در این فرمول، D1 مقداری هست که جستجو میکنید
      ستون A ستونی هست که جستجو در اون انجام میشه و ستون B ستونی هست که مقدار مورد نظر فراخوانی میشه

      برای ثبت فرمول هم از ctrl+shift+enter استفاده کنید

  • rishsefid ۹ آبان ۱۳۹۷ / ۰:۴۴ ق٫ظ

    سلام خدمت خانم خاکزاد.خسته نباشید.لطفا منو راهنمایی کنید.اگه ما در یک ستون یک سری از اعداد داشته باشیم و در ستون دیگر مجموع چند عدد با هر یک از ان اعداد برابر باشد چگونه انها را پیدا کنیم و رنگی کنیم و مشخص کنیم.(راستش دیگه از راهنمایی دیگران نتونستم راهی پیدا کنم)(مغایرت بانکی) واز چه توابعی استفاده کنم.
    و سوال دیگر ایا در اکسل با توابع میشه حلقه ایجاد کرد؟
    ممنونم برای پاسخگویی که وقت میگذارید و امیدوارم همیش موفق باشید.

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

      درود بر شما
      بحث مغایرت گیری خیلی متنوع هست و بستگی به ساختار ها و … داره. یک راه استفاده از solver add ins هست که البته یک سری محدویدت ها داره.
      یعضی ها هم چند مرحله این کار رو انجام میدن که خب روش های مختلفی هم استفاده میکنن.

      حلقه رو هم با کدنویسی میتونید ایجاد کنید.

      • rishsefid ۱۰ آبان ۱۳۹۷ / ۲:۰۵ ب٫ظ

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

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

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

  • mak ۱۱ مهر ۱۳۹۷ / ۱۰:۴۲ ق٫ظ

    با سلام
    این فرمول

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

    با فرمول یکسانه؟

    =iferror (vlookup;"  ")
    • آواتار
      حسنا خاکزاد ۱۱ مهر ۱۳۹۷ / ۱۲:۰۹ ب٫ظ

      درود بر شما

      بله

      البته اگه بجای موجود نیست، بذارید ” “

    • مصطفی اسدی ۱۲ مهر ۱۳۹۷ / ۱۱:۳۷ ب٫ظ

      سلام ممنون از آموزش هاای خوبتون
      میشه مثال از ااستفاده از vlookup در کدنویسی بگذارید یا index ممنون

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

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

  • mak ۱۱ مهر ۱۳۹۷ / ۱۰:۴۱ ق٫ظ

    با سلام و احترام
    ممنون از آموزش‌های کامل، زیبا و کاربردی‌ شما

  • امیرحسین مظاهری ۸ مهر ۱۳۹۷ / ۱۱:۳۵ ق٫ظ

    ممنون از وقتتون . بله احتمالا بنده بد مطرح کردم .
    در حالت کلی میخوام مدارکdcc transmittal و comment sheet …. های یک پروژه ی مهندسی رو مرتب کنم . با توجه به coordination procedure موجود .
    من میخوام در ستون اول ، عبارتی رو وارد کنم . عبارت میتونه شماره سند باشه.
    بعنوان مثال شماره سند واصله به من : EX-FH-UH-L-97-001
    در coordination procedure ترتیب و تعاریفی برای هر قسمت داریم . مثلا قسمت اول شماره سند بالا ، مشخص کننده نام پروژه باشد . در این رشته EX را مخفف excelpedia در نظر گرفته ایم . من میخواهم excelpedia در ستون دوم ( ستون نام پروژه ) درج شود .

    قسمت بعدی شماره (در اینجا FH ) بعنوان مثال ارسال کننده ی نامه است . FH را قبلا factory headquarter تعریف کردیم . حال میخواهم در ستون سوم ( ارسال کننده ) عبارت factory headquarter رو وارد کنه .
    هدف بنده اینه که در ستون اول شماره سند رو وارد کنم ، و در بقیه ستون ها ، به ترتیب ، اطلاعات رو وارد کنه .

    باز هم ممنون از وقت و شکیبایی تون .

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

      برای اینکار باید اول جداول استاندارد رو تعریف کنید برای اجزای مختلف کد
      مثلا یک جدول اسم پروژه ها با کدهاشون
      یک جدول اسم ارسال کننده ها و کدهای مخففشون
      و ….

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

      بعد نتیجه تفکیک رو بذارید داخل تابع vlookup
      مثلا اگر قسمت اول کد ختما ۳ رقمه، نمونه فرمول این میشه:

      =vlookup(left(A1,3),Table1,2,0)

      توضیح:
      کد در سلول A1 نوشته شده
      Table1 جدول تهیه شده کدهای قسمت اول هست

      • امیرحسین مظاهری ۹ مهر ۱۳۹۷ / ۹:۱۹ ق٫ظ

        ممنون !
        تفکیک فرمول های متنی رو داخل سایت جستجو کنم ؟ الگو منظور چیست ؟

        و آیا اصلا این کار ، با اکسل متداول هست ؟
        بازم ممنون !

  • امیرحسین مظاهری ۷ مهر ۱۳۹۷ / ۴:۵۷ ب٫ظ

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

    abc-123-dfg
    مثلا حروف قبل از خط فاصله اول ، مشخص کننده کشور سازنده محصولی باشد ( مثلا Abc را ایران تعریف کردیم ، grm را آلمان تعریف کرده بودیم و aus را استرالیا ) کاراکتر های بعدی مشخص کننده مثلا سال ساخت محصول باشند ( مثلا ۱۲۳ را ساخت امسال ، ۴۵۶ را ساخت سال قبل و …. تعریف کرده باشیم )
    همینطور الی آخر.

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

      اگر منظورتون اینه که مثلا سه ستون داشته باشید و در هر ستون یک قسمت از کد رو بنویسید و بخواید در ستون چهارم به هم بچسبه.( یعنی در یک سلول بنویسید ایران و در ستون کد تبدیل بشه به ABC و الی آخر)
      بله
      میشه با Vlookup این کار و کرد.
      جداول استاندارد رو تشکیل بدید و فراخوانی کنید

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

  • امیرحسین مظاهری ۷ مهر ۱۳۹۷ / ۱۱:۵۳ ق٫ظ

    سلام . ممنون از مطلب خوبتون . من اگر بخواهم یک کد ، بطور مثال شماره نامه ای در فرمت خاص وارد یک سلول کنم ، و در ستون های دیگر این کد را بخواند و از حالت فشرده خارج کند ، باید از همین دستور استفاده کنم ؟
    مثال : m-k-1397 را وارد میکنم . میخواهم در ستون اول معنای m را ( مثلا به معنی مهم ) وارد کند و در ستون دوم معنای حرف k ( مثلا ، تاخیر ) را وارد کند …

    ممنون از مطالب مفیدتون.

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

      درود بر شما
      منظورتون از حالت فشرده خارج کردن چی هست؟!

      سوال رو واضح تر بفرمایید

ارسال دیدگاه

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