تابع MATCH در اکسل
تابع MATCH یکی از ابزارهای قدرتمند اکسل برای پیدا کردن موقعیت (index) یک مقدار درون یک محدوده یا آرایه است. به جای بازگرداندن مقدار خودِ سلول، MATCH عدد موقعیتی را برمیگرداند که میتوانید آن را در ترکیب با توابعی مثل INDEX برای بازیابی مقدار واقعی استفاده کنید. در این مقاله به صورت قدمبهقدم سینتکس، حالتها، مثالهای عملی و تکنیکهای پیشرفته مانند استفاده با wildcard، ترکیب با INDEX، حالتهای خطا و تابع جدید XMATCH را توضیح میدهیم.
سینتکس تابع MATCH
شکل کلی تابع:
=MATCH(lookup_value, lookup_array, [match_type])توضیح مختصر پارامترها:
- lookup_value: مقداری که به دنبال آن هستید (عدد، متن یا مرجع).
- lookup_array: محدودهای که در آن جستجو انجام میشود (یک ردیف یا یک ستون).
- match_type (اختیاری): نوع تطابق — 1، 0 یا -1.
معنی مقادیر match_type
| match_type | رفتار | نکته |
|---|---|---|
| 1 یا رها کردن | جستجوی بزرگترین مقدار کوچکتر یا مساوی lookup_value (آرایه باید مرتب صعودی باشد) | اگر مرتب نباشد نتایج اشتباه خواهد بود |
| 0 | تطابق دقیق | میتواند از wildcardها استفاده کند؛ سریعترین و امنترین انتخاب برای معمولاً |
| -1 | جستجوی کوچکترین مقدار بزرگتر یا مساوی lookup_value (آرایه باید مرتب نزولی باشد) | کمتر استفاده میشود و نیاز به مرتبسازی نزولی دارد |
مثالهای پایه
فرض کنید ستون A شامل نامهاست و شما میخواهید جایگاه “علی” را پیدا کنید:
=MATCH("علی", A:A, 0)این فرمول عدد ردیف (نسبت به محدوده A:A) را برمیگرداند که “علی” در آن قرار دارد. اگر “علی” وجود نداشته باشد، خطای #N/A میگیرید.
مثال جستجوی تقریبی
برای دادههای مرتبشده (مثلاً نمرهها یا بازههای قیمت) میتوانید از match_type=1 استفاده کنید:
=MATCH(72, B2:B100, 1)اگر مقدار 72 دقیقاً موجود نباشد، MATCH بزرگترین مقدار کوچکتر یا مساوی 72 را پیدا میکند. آرایه B2:B100 باید به ترتیب صعودی مرتب شده باشد.
استفاده با wildcard (علامتهای جایگزین)
هنگام استفاده از match_type=0 میتوان از کاراکترهای wildcard مثل * و ? برای تطابق متنها بهره برد:
=MATCH("رضا*", C2:C50, 0)این فرمول موقعیت اولین سلولی را که با “رضا” شروع میشود برمیگرداند (مثلاً “رضا محمدی”). اگر میخواهید عبارت در هر جای متن باشد، از “*رضا*” استفاده کنید.
ترکیب با INDEX — جایگزین بهتر برای VLOOKUP
یکی از پرکاربردترین الگوها ترکیب INDEX و MATCH است که انعطاف بیشتری نسبت به VLOOKUP دارد و میتواند سمت چپِ ستون را نیز جستجو کند.
=INDEX(B2:B100, MATCH("فرهاد", A2:A100, 0))توضیح: MATCH موقعیت “فرهاد” را در A2:A100 پیدا میکند (مثلاً 5)، سپس INDEX مقدار متناظر در B2:B100 در همان ردیف را برمیگرداند.
جستجوی دو معیاره (چند شرطی)
برای پیدا کردن سطری که دو شرط را همزمان دارد، میتوان از آرایهها یا ستون کمکی استفاده کرد. مثال آرایه (در نسخههای قدیمی اکسل با Ctrl+Shift+Enter یا در نسخههای جدید بهصورت عادی):
=MATCH(1, (D2:D100="تهران")*(E2:E100="فروش"), 0)توضیح: پرانتزها دو آرایه بولی تولید میکنند؛ ضرب آنها آرایهای از 1/0 میسازد که تنها در ردیفهای هر دو شرط برابر با 1 است. MATCH مقدار 1 را پیدا میکند و موقعیت ردیف را بازمیگرداند.
کاربردهای عملی و نکات حرفهای
- برای جلوگیری از خطای #N/A از IFERROR استفاده کنید:
=IFERROR(MATCH(...), "پیدا نشد") - اگر از MATCH برای آدرسدهی پویا استفاده میکنید، میتوانید با OFFSET یا INDEX محدودههای پویا بسازید.
- در جداول بزرگ، استفاده از MATCH به جای VLOOKUP ممکن است سرعت را افزایش دهد—مخصوصا وقتی محدوده جستجو کوچک است.
- دقت کنید هنگام استفاده از match_type=1 یا -1 حتماً آرایه را مرتب کنید؛ در غیر این صورت نتیجه غیرقابلاعتماد خواهد بود.
تابع جدید XMATCH
در نسخههای جدید آفیس، تابع XMATCH معرفی شده که امکانات بیشتر و رفتار سادهتری نسبت به MATCH دارد: پشتیبانی از جستجوی عمودی/افقی، گزینههایی برای بازگشت نزدیکترین مقدار یا اولین/آخرین تطابق، و پشتیبانی داخلی از wildcard. مثال:
=XMATCH("علی", A2:A100, 0, 1)توضیح: XMATCH مشابه MATCH عمل میکند ولی پارامترهای بیشتری برای کنترل رفتار دارد و معمولاً در پروژههای جدید توصیه میشود.
نمونه کامل: پیدا کردن قیمت بر اساس کد و نمایش پیام مناسب
=IFERROR(
INDEX(PriceRange, MATCH(A2, CodeRange, 0)),
"کد پیدا نشد"
)توضیح: اگر کد محصول در سلول A2 وجود نداشته باشد، پیام “کد پیدا نشد” نمایش داده میشود. در غیر این صورت قیمت مربوطه از PriceRange برگردانده میشود. این الگو در گزارشهای فروش و داشبوردها بسیار مفید است.
خلاصه و بهترین روشها
- برای جستجوی دقیق همیشه match_type=0 را استفاده کنید مگر اینکه آرایه مرتب و نیاز به جستجوی تقریبی باشد.
- از ترکیب INDEX+MATCH برای انعطاف و عملکرد بهتر نسبت به VLOOKUP بهره ببرید.
- از wildcardها برای جستجوی متنی استفاده کنید و از IFERROR برای مدیریت خطاها استفاده نمایید.
- در اکسلهای جدید، ابتدا XMATCH را بررسی کنید چون امکانات بیشتری دارد.
با درک درست match_type و نحوه ترکیب MATCH با توابع دیگر میتوانید جستجوها و گزارشهای پویا و قابلاطمینانی در اکسل بسازید. این تابع در تحلیل داده، گزارشگیری و طراحی داشبوردها کاربرد فراوانی دارد و یادگیری نکات پیشرفته آن سرمایهگذاری زمانِ ارزشمندی است.
آیا این مطلب برای شما مفید بود ؟




