قبلا در این مطلب توابع کاربردی برای جستجو در بانکهای اطلاعاتی را معرفی کرده بودیم. این توابع یک نقص مهم دارند و آن این است که اگر جدول مورد نظر به گونهای باشد که عبارت مورد جستجو در ستون یا ردیف اول جدول قرار نداشته باشد نمیتوان از توابع معرفیشده استفاده کرد. اما چاره کار چیست؟
مثال زیر را در نظر بگیرید:
A | B | |
۱ | کد محصول | نام محصول |
۲ | ۱۲۸۲ | قطعه شماره ۱ |
۳ | ۱۴۶۴ | قطعه شماره ۲ |
۴ | ۱۳۹۸ | قطعه شماره ۳ |
۵ | ۱۳۳۹ | قطعه شماره ۴ |
۶ | ۱۲۸۶ | قطعه شماره ۵ |
اگر بخوایم در این جدول نام محصول متناظر با کد ۱۳۹۸، را بدست بیاریم میتوانیم از تابع VLOOKUP استفاده کنیم.
=VLOOKUP(1398;A:B;2;FALSE)
اما اگر عبارت مورد جستجو مانند جدول زیر در ستون دوم جدول قرار داشته باشد، در این حالت دیگر تابع VLOOKUP کارایی ندارد.
A | B | |
۱ | نام محصول | کد محصول |
۲ | قطعه شماره ۱ | ۱۲۸۲ |
۳ | قطعه شماره ۲ | ۱۴۶۴ |
۴ | قطعه شماره ۳ | ۱۳۹۸ |
۵ | قطعه شماره ۴ | ۱۳۳۹ |
۶ | قطعه شماره ۵ | ۱۲۸۶ |
دلیل آنکه نمیتوانیم با استفاده از تابع VLOOKUP بر اساس جستجوی کد محصول، نام محصول را بدست بیاوریم این است که نمیشود پارامتر سوم تابع VLOOKUP را ۱- قرار داد و به عقب حرکت کرد. اینجاست که باید با استفاده از ترکیب دو تابع INDEX و MATCH که این مشکل را حل کرد.
۱- ابتدا تابع INDEX را مینویسیم و پارامتر اول آن را A:A قرار میدهیم، چون میخواهیم نام محصول را مشخص کنیم و نام محصول هم در ستون A قرار دارد.
=INDEX(A:A,
۲- در حالت عادی میتوانیم شماره سطر را به تابع INDEX بدهیم. شماره سطر عدد ۱۳۹۸ برابر ۴ هست اما ما نمیخواهیم این شماره سطر را دستی وارد کنیم. بلکه میخواهیم شماره سطر به صورت خودکار توسط اکسل پیدا شود. اینکار را با تابع MATCH انجام میدهیم. تابع زیر دقیقاً اینکار را برای ما انجام میدهد. یعنی عدد ۱۳۹۸ را در ستون B پیدا میکند و شماره سطر آن را که برابر ۴ هست برمیگرداند.
=MATCH(1398,B:B,0)
۳- در نهایت تابع فوف را به شکل زیر در تابع INDEX قرار میدهیم.
=INDEX(A:A,MATCH(1398,B:B,0))
میتوانیم به جای عدد ۱۳۹۸ یک سلول یا هر کد دیگری را قرار دهیم و تابع بالا نام محصول متناظر با آن کد را برای ما پیدا میکند.
نکته ۱: البته در مورد تابع Hlookup نیز میتوانید از این دو تابع استفاده کنید.
نکته ۲: تابع Index دارای یک آرگومان سوم نیز هست که اختیاری است. با استفاده از این آرگومان میتوانید جستجوی دوبعدی نیز انجام دهید یعنی پیدا کردن یک عبارت از روی شماره ردیف و ستون متناظر با آن، مانند تصویر زیر. توضیحات تکمیلی در این مورد را میتوانید در این سایت مشاهده کنید.