تابع INDEX MATCH ترکیبی در اکسل
تابع INDEX و MATCH دو ابزار قدرتمند در اکسل هستند که ترکیب آنها جایگزین قابل اعتماد و منعطفتری برای VLOOKUP محسوب میشود. در این مقاله هدف داریم بهصورت کاملاً عملی، مثالها، نکات عملکردی و روشهای چند شرطی و دوطرفه را توضیح دهیم تا بتوانید در پروژههای واقعی از آنها استفاده کنید.
چرا INDEX + MATCH بهتر از VLOOKUP است؟
- قابلیت جستجوی ستونهای سمت چپ (VLOOKUP نمیتواند بهصورت پیشفرض از سمت چپ جستجو کند).
- پایداری بیشتر در برابر افزودن/حذف ستونها (INDEX/MATCH به جای شماره ستون ثابت، بازه را مشخص میکند).
- عملکرد بهتر در فایلهای بزرگ وقتی MATCH روی ستونهای نمایهشده استفاده میشود.
- امکان استفاده از جستجوی دو بعدی یا چند شرطی بهسادگی.
ترکیب پایه — جستجوی ساده
ساختار پایهای ترکیب:
=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))این فرمول مقدار lookup_value را در lookup_range پیدا میکند و موقعیت آن را با MATCH بر میگرداند، سپس INDEX بر اساس آن موقعیت مقدار متناظر از return_range را بازمیگرداند.
مثال داده نمونه
| ProductID | Product | Price | Jan | Feb | Mar |
|---|---|---|---|---|---|
| 101 | Mouse | 25 | 50 | 60 | 55 |
| 102 | Keyboard | 45 | 30 | 35 | 40 |
| 103 | Monitor | 150 | 10 | 12 | 11 |
مثال 1 — جستجوی قیمت با استفاده از ProductID
=INDEX(C2:C4, MATCH(E1, A2:A4, 0))توضیح: فرض کنید E1 شامل شناسه محصول (مثلاً 102) است. MATCH موقعیت 102 را در ستون A پیدا میکند (در اینجا 2 چون ردیف دوم دیتاست)، و INDEX مقدار متناظر از ستون C (Price) را بازمیگرداند یعنی 45.
جستجوی دوطرفه (Two-way Lookup)
برای یافتن مقداری که بر اساس ردیف و ستون مشخص شده است (مثلاً فروش یک محصول در ماه مشخص) از نسخه دوبُعدی INDEX استفاده کنید:
=INDEX(A2:F4, MATCH(ProductID, A2:A4, 0), MATCH(MonthName, A1:F1, 0))توضیح: در این فرمول، اولین MATCH شماره ردیف را برمیگرداند و دومین MATCH شماره ستون را پیدا میکند. INDEX با دو شماره موقعیت، مقدار متناظر در جدول دو بعدی را برمیگرداند.
مثال 2 — جستجوی فروش یک محصول در ماه مشخص
=INDEX(A2:F4, MATCH(102, A2:A4, 0), MATCH("Feb", A1:F1, 0))توضیح: این فرمول مقدار فروش برای ProductID = 102 در ستون Feb را برمیگرداند (در جدول مثال بالا مقدار 35).
حالتهای چند شرطی (Multiple Criteria)
برای جستجو وقتی بیش از یک شرط دارید، میتوانید از ترکیب آرایی MATCH با ضرب منطقی استفاده کنید. در اکسلهای جدید نیازی به Ctrl+Shift+Enter نیست، اما در نسخههای قدیمی باید آن را بهعنوان فرمول آرایهای وارد کنید.
=INDEX(return_range, MATCH(1, (criteria1_range=val1)*(criteria2_range=val2), 0))توضیح: عبارت (criteria1_range=val1) یک آرایه از TRUE/FALSE میسازد که با تبدیل به عدد (TRUE=1, FALSE=0) و ضرب در آرایه دوم، خانهای را که هر دو شرط درست است به صورت 1 مشخص میکند. MATCH دنبال مقدار 1 میگردد و موقعیت را برمیگرداند.
مثال 3 — چند شرطی با Product و Month
=INDEX(D2:F4, MATCH(1, (A2:A4=102)*(D1:F1="Feb"), 0))توضیح: این مثال فرض میکند return_range یک بردار یکتا است که با ساختار داده تطابق دارد؛ معمولاً بهتر است برای چیدمان واقعی ابتدا محدودهها را مطابق شکل جدول تنظیم کنید. در مثالهای واقعی معمولا از ترکیب ستونها یا آرایههای منظم استفاده میشود.
بهبود خطاپذیری و کار با #N/A
برای جلوگیری از نمایش ارور هنگام پیدا نشدن مقدار، فرمول را با IFERROR یا IFNA بپوشانید:
=IFERROR(INDEX(C2:C4, MATCH(E1, A2:A4, 0)), "Not found")توضیح: اگر MATCH مقدار را پیدا نکند، به جای خطای #N/A متن دلخواه نمایش داده میشود.
نکات عملکردی و بهینهسازی
- برای جستجوی دقیق همیشه از آرگومان match_type = 0 (exact match) استفاده کنید مگر اینکه داده مرتب شده و منظور شما تقریب باشد.
- اگر دیتاست خیلی بزرگ است، بهتر است lookup_range به جای ردیفها یا ستونهای کامل محدود شود تا سرعت بالا رود.
- برای چند شرطی پیچیده، استفاده از ستون کمکی (Concatenate key) میتواند خوانایی و سرعت را افزایش دهد.
- در فایلهای با میلیونها ردیف، INDEX/MATCH معمولاً سریعتر از VLOOKUP است چون میتوان تنها یک ستون را برای MATCH انتخاب کرد.
نتیجهگیری و توصیه نهایی
ترکیب INDEX و MATCH انعطاف، دقت و کارایی بالا را در جستجوهای اکسل فراهم میکند. از این ترکیب برای جستجوی چپ به راست، جستجوی دوبعدی و سناریوهای چند شرطی استفاده کنید. در عمل، یادگیری چند الگوی پرکاربرد مانند نمونههای بالا باعث میشود در پروژههای واقعی کمتر دچار خطا و محدودیت شوید.
اگر نمونه فایل یا دیتاست مشخصی دارید، میتوانم فرمول دقیقتری با توجه به ساختار فایل شما پیشنهاد کنم.
آیا این مطلب برای شما مفید بود ؟




