مقایسه VLOOKUP و XLOOKUP: بالاخره کدوم بهتره؟
فهرست مطالب :
Toggleتا حالا شده توی یه فایل اکسل بزرگ، با کلی ستون درهموبرهم، بخوای یه مقدار رو پیدا کنی و احساس کنی که VLOOKUP قدیمی دیگه جواب نمیده؟ یا شنیده باشی که «XLOOKUP بهتره» ولی ندونی واقعاً چرا و کجا باید ازش استفاده کنی؟
همه ما اون لحظه رو تجربه کردیم: به صفحه اکسل زل میزنی، فرمول VLOOKUP رو با وسواس مینویسی، شماره ستون رو میشماری، Enter رو میزنی… و با #N/A مواجه میشی! یا بدتر—یکی یه ستون جدید اضافه میکنه و همه فرمولهات به هم میریزه.
نگران نباش! توی این راهنما قراره با هم یه مقایسه کامل، صادقانه و علمی بین VLOOKUP و XLOOKUP انجام بدیم. از دانشجویی که میخواد نمرات رو از یه شیت به شیت دیگه منتقل کنه، تا کارمندی که هر روز با هزاران ردیف داده سروکار داره، تا حسابداری که باید گزارش مالی دقیق ارائه بده—این مقاله برای همه نوشته شده.
۱. داستان دو تابع
بیا یه لحظه تصور کنیم: سال ۲۰۰۸ هست. توی یه شرکت بزرگ، حسابدار ارشد داره با VLOOKUP لیست حقوق ۵۰۰ نفر رو آماده میکنه. همه چی خوب پیش میره تا اینکه… یکی از همکارا یه ستون جدید به شیت اصلی اضافه میکنه. ناگهان همه فرمولهای VLOOKUP به هم میریزن! چون شماره ستونها عوض شده.
حالا بریم به سال ۲۰۲۴: همون شرکت، همون سناریو. ولی این بار حسابدار از XLOOKUP استفاده میکنه. ستون جدید اضافه میشه، ولی فرمولها بدون هیچ مشکلی به کارشون ادامه میدن. چرا؟
VLOOKUP از سال ۱۹۸۵ همراه ما بوده—بیش از ۳۵ سال! طبق آمار، سومین تابع پرکاربرد در کل تاریخ اکسل است. میلیاردها فرمول VLOOKUP در سراسر جهان وجود داره.
اما مایکروسافت در سال ۲۰۱۹ XLOOKUP رو معرفی کرد، تابعی که برای رفع محدودیتهای VLOOKUP طراحی شده. و حالا در سال ۲۰۲۵، حدود ۸۵٪ از کاربران حرفهای اکسل برای پروژههای جدید از XLOOKUP استفاده میکنند.
اما سوال اصلی اینجاست: آیا XLOOKUP واقعاً همیشه بهتره؟ یا هنوز جاهایی هست که VLOOKUP حرف اول رو میزنه؟
۲. VLOOKUP: قهرمان قدیمی را بهتر بشناسیم
ساختار VLOOKUP
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
- lookup_value: مقداری که دنبالش میگردی
- table_array: محدودهای که هم مقدار جستجو رو شامل میشه، هم مقدار بازگشتی
- col_index_num: شماره ستونی که مقدار بازگشتی توش قرار داره (از سمت چپ محدوده)
- range_lookup: FALSE برای جستجوی دقیق، TRUE برای جستجوی تقریبی
۳ محدودیت اصلی VLOOKUP
۱. فقط به سمت راست جستجو میکند: ستون جستجو باید همیشه اولین ستون (چپترین) محدوده باشد و مقدار بازگشتی حتماً باید در ستونهای سمت راست آن باشد. اگر ستون جستجو در وسط یا سمت راست باشد، باید کل ساختار داده را تغییر دهید.
۲. شکستن فرمول با اضافه/حذف ستون: شماره ستون (col_index_num) یک عدد ثابت است. اگر ستونی بین ستون جستجو و ستون بازگشتی اضافه یا حذف شود، این عدد دیگر معتبر نیست و فرمول خراب میشود.
۳. پیشفرض Approximate Match: اگر آرگومان چهارم را فراموش کنید، VLOOKUP بهطور پیشفرض از جستجوی تقریبی استفاده میکند که نیازمند مرتبسازی دادههاست.
یک مثال ساده از VLOOKUP
فرض کن یه جدول داری با این ساختار:
- ستون A: کد محصول
- ستون B: نام محصول
- ستون C: قیمت
برای پیدا کردن قیمت محصول با کد “PR-12-Y”:
=VLOOKUP(“PR-12-Y”, A2:C100, 3, FALSE)
یعنی: توی محدوده A2 تا C100 بگرد، کد PR-12-Y رو پیدا کن، و مقدار ستون سوم (قیمت) رو برگردون. اگه ستون جدیدی بین نام محصول و قیمت اضافه بشه، باید ۳ رو به ۴ تغییر بدی—وگرنه فرمول اشتباه میشه!
۳. XLOOKUP: نسل جدید جستجو در اکسل
ساختار XLOOKUP
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
- lookup_value: مقداری که دنبالش میگردی
- lookup_array: ستون جستجو (فقط ستون، نه کل محدوده)
- return_array: ستون بازگشتی (میتونه سمت چپ یا راست ستون جستجو باشه)
- if_not_found (اختیاری): مقداری که در صورت پیدا نشدن نمایش بده
- match_mode (اختیاری): ۰ برای دقیق، -۱ برای کوچکترین نزدیک، ۱ برای بزرگترین نزدیک، ۲ برای wildcard
- search_mode (اختیاری): ۱ برای جستجو از اول، -۱ برای جستجو از آخر، ۲ برای جستجوی باینری (مرتبشده صعودی)، -۲ برای باینری نزولی
XLOOKUP نسبت به VLOOKUP انعطافپذیرتر و قدرتمندتر است و در اکسل ۲۰۲۱ و نسخههای بالاتر (Microsoft 365) قابل استفاده میباشد.
۵ مزیت کلیدی XLOOKUP
۱. جستجو در هر جهت: ستون جستجو و ستون بازگشتی میتونن هر جایی از جدول باشن—چپ، راست، بالا، پایین. XLOOKUP میتونه هم عمودی و هم افقی جستجو کنه.
۲. عدم شکست با تغییر ساختار جدول: چون ستونها جداگانه انتخاب میشن، اضافه یا حذف شدن ستونها تأثیری روی فرمول نداره.
۳. مدیریت خطای داخلی: آرگومان if_not_found دیگه نیازی به IFERROR یا IFNA نداره.
۴. پیشفرض Exact Match: برخلاف VLOOKUP، XLOOKUP بهطور پیشفرض جستجوی دقیق انجام میده.
۵. حالتهای پیشرفته جستجو: میتونی جستجوی تقریبی در هر دو جهت (بزرگترین نزدیک یا کوچکترین نزدیک) انجام بدی.
یک مثال ساده از XLOOKUP
همون سناریوی قبلی—پیدا کردن قیمت محصول با کد “PR-12-Y”:
=XLOOKUP(“PR-12-Y”, A2:A100, C2:C100, “پیدا نشد”)
ببین چقدر سادهتر و خواناتر شده! ستون جستجو (A2:A100) و ستون بازگشتی (C2:C100) جدا هستن. اگه ستونی اضافه بشه، فرمول همچنان درست کار میکنه. و اگه کد محصول پیدا نشه، بهجای #N/A پیام «پیدا نشد» نمایش داده میشه.
۴. مقایسه رو در رو: ۱۰ تفاوت کلیدی
جدول مقایسه جامع
| ویژگی | VLOOKUP | XLOOKUP |
| جهت جستجو | فقط عمودی، چپ به راست | عمودی و افقی، هر جهت |
| موقعیت ستون جستجو | باید چپترین ستون باشد | هر جایی میتواند باشد |
| پیشفرض تطابق | Approximate (تقریبی) | Exact (دقیق) |
| مدیریت خطا | نیاز به IFERROR/IFNA | داخلی (if_not_found) |
| تأثیر اضافه/حذف ستون | فرمول میشکند | بدون تأثیر |
| جستجوی تقریبی | فقط Exact یا Approximate ساده | چهار حالت: Exact، بزرگترین نزدیک، کوچکترین نزدیک، Wildcard |
| جهت جستجو در داده | فقط اول به آخر | اول به آخر یا آخر به اول |
| Binary Search | فقط در Approximate Match با داده مرتب | پشتیبانی کامل با search_mode |
| تعداد آرگومانها | ۴ (۳ اجباری + ۱ اختیاری) | ۶ (۳ اجباری + ۳ اختیاری) |
| سازگاری با نسخههای قدیمی | ✅ همه نسخهها | ❌ فقط Excel 2021 و Microsoft 365 |
| پشتیبانی از Wildcard | ✅ با تنظیمات خاص | ✅ داخلی (match_mode=2) |
| بازگرداندن چند ستون | ❌ نیاز به فرمولهای جداگانه | ✅ با آرایههای پویا |
| خوانایی فرمول | نیاز به شمارش ستون | انتخاب مستقیم ستونها |
💡 نکته جالب: XLOOKUP حتی نیازی نداره که ستونهای جستجو و بازگشتی توی یه Sheet باشن!
تفاوت در Approximate Match
هر دو تابع Approximate Match رو پشتیبانی میکنن، ولی XLOOKUP انعطاف بیشتری داره:
- VLOOKUP: فقط Exact (FALSE) یا Approximate (TRUE). حالت Approximate نیازمند داده مرتبشده صعودی است و بزرگترین مقداری که از lookup_value کوچکتر است را برمیگرداند.
- XLOOKUP: سه حالت مختلف برای Approximate Match: -۱ برای کوچکترین نزدیک، ۱ برای بزرگترین نزدیک، و ۲ برای Wildcard. نیازی به مرتبسازی دادهها هم نیست.
۵. مقایسه سرعت و عملکرد (با اعداد واقعی)
اینجاست که خیلی از مقالات صادق نیستن! بیایم با اعداد و ارقام واقعی بررسی کنیم:
بنچمارک واقعی: ۱۰۰,۰۰۰ ردیف داده
در یک تست عملی روی ۱۰۰,۰۰۰ ردیف داده:
| تابع | زمان (ثانیه) | نسبت به VLOOKUP |
| VLOOKUP (Exact Match) | ۰.۴۰ | ۱۰۰٪ |
| XLOOKUP (Exact Match) | ۰.۵۶ | ۱۴۰٪ (۴۰٪ کندتر!) |
| INDEX/MATCH | ۰.۴۱ | ۱۰۲.۵٪ |
| XLOOKUP (Binary Search) | ۰.۱۷ | ۴۲.۵٪ (سریعتر!) |
این نتایج از یک تست واقعی با MacBook Air و VBA به دست اومده.
تحلیل نتایج:
۱. در حالت Exact Match ساده، VLOOKUP میتونه تا ۴۰٪ سریعتر از XLOOKUP باشه.
۲. اما XLOOKUP با Binary Search (search_mode=2) میتونه بیش از ۲ برابر سریعتر از XLOOKUP معمولی باشه.
۳. VLOOKUP در حالت Approximate Match هم از Binary Search استفاده میکنه که سرعتش رو بالا میبره.
۴. XLOOKUP با آرایههای داینامیک: وقتی نیاز به بازگرداندن چندین ستون هست، XLOOKUP کارآمدتر عمل میکنه.
چرا XLOOKUP گاهی کندتر است؟
- پردازش rangeهای مجزا: XLOOKUP دو آرایه جداگانه رو پردازش میکنه
- پیشفرض Exact Match: VLOOKUP در حالت Approximate سریعتره چون از Binary Search استفاده میکنه
- قابلیتهای بیشتر = محاسبات بیشتر: XLOOKUP باید حالتهای بیشتری رو بررسی کنه
🎯 نکته مهم: سرعت تنها معیار نیست! در دیتاستهای کوچک (کمتر از ۱۰۰۰ ردیف)، تفاوت سرعت اصلاً محسوس نیست. در دیتاستهای بزرگ، انتخاب بین سرعت (VLOOKUP) و انعطافپذیری (XLOOKUP) یک trade-off هست.
۶. راهنمای انتخاب: کی از کدوم استفاده کنیم؟
حالا که همه جوانب رو بررسی کردیم، برسیم به سوال اصلی: در چه سناریویی کدوم تابع بهتره؟
✅ از XLOOKUP استفاده کن وقتی:
| سناریو | دلیل |
| داری یه پروژه جدید شروع میکنی | بهترین انتخاب برای آینده |
| ستون جستجو سمت چپ نیست | XLOOKUP محدودیت جهت نداره |
| ساختار داده مدام تغییر میکنه | با اضافه شدن ستون نمیشکنه |
| میخوای فرمول خواناتر باشه | ستونها رو با اسم میبینی، نه عدد |
| نیاز به خطای سفارشی داری | if_not_found داخلی |
| جستجوی دوطرفه میخوای | میتونه از آخر به اول هم بگرده |
| با Microsoft 365 یا Excel 2021 کار میکنی | XLOOKUP در دسترسه |
✅ از VLOOKUP استفاده کن وقتی:
| سناریو | دلیل |
| فایل رو با دیگران به اشتراک میذاری | ممکنه نسخه قدیمی اکسل داشته باشن |
| با دیتاستهای بسیار بزرگ کار میکنی | در Exact Match میتونه سریعتر باشه |
| همه همکارات VLOOKUP بلدن | منحنی یادگیری صفره |
| داری فایلهای قدیمی رو نگهداری میکنی | تغییر فرمولهای موجود ریسکه |
| سازمانت هنوز Excel 2019 یا قدیمیتر داره | XLOOKUP اصلاً وجود نداره |
📊 جدول تصمیمگیری سریع
| معیار | VLOOKUP | XLOOKUP |
| انعطافپذیری | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| سرعت در Exact Match | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| سرعت با Binary Search | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| خوانایی فرمول | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| سازگاری با نسخههای قدیمی | ⭐⭐⭐⭐⭐ | ⭐ |
| مدیریت خطا | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| مقاومت در برابر تغییر ساختار | ⭐ | ⭐⭐⭐⭐⭐ |
💡 توصیه نهایی: برای پروژههای جدید، XLOOKUP رو انتخاب کن. برای فایلهای اشتراکی با دیگران، VLOOKUP. و مهمتر از همه: هر دو رو بلد باش! چون در دنیای واقعی، با هر دو طرف مواجه میشی.
۷. تکنیکهای پیشرفته هر دو تابع
۷.۱ VLOOKUP پیشرفته
VLOOKUP با MATCH برای انعطاف در ستون:
=VLOOKUP(A2, Data!A:D, MATCH(“Price”, Data!A1:D1, 0), FALSE)
این فرمول شماره ستون رو بهصورت پویا با MATCH پیدا میکنه.
VLOOKUP دوطرفه (Two-Dimensional):
=VLOOKUP(A2, Data!A:Z, MATCH(B1, Data!A1:Z1, 0), FALSE)
هم سطر و هم ستون رو جستجو میکنه. برای این سناریو، VLOOKUP + MATCH میتونه انتخاب خوبی باشه.
۷.۲ XLOOKUP پیشرفته
Nested XLOOKUP (جایگزین INDEX/MATCH/MATCH):
=XLOOKUP(H2, B1:E1, XLOOKUP(G2, A2:A9, B2:E9))
این فرمول دوطرفه، هم ردیف و هم ستون رو جستجو میکنه.
XLOOKUP با Wildcard:
=XLOOKUP(“*تهران*”, A2:A100, B2:B100, “پیدا نشد”, ۲)
با match_mode=2، میتونی از wildcard استفاده کنی.
XLOOKUP با Binary Search:
=XLOOKUP(A2, B2:B10000, C2:C10000, “پیدا نشد”, ۰, ۲)
search_mode=2 جستجوی باینری انجام میده که برای دیتاستهای مرتبشده فوقالعاده سریعه.
۸. مهاجرت از VLOOKUP به XLOOKUP: راهنمای عملی
اگه تصمیم گرفتی به XLOOKUP مهاجرت کنی، این نکات رو در نظر بگیر:
گامهای مهاجرت
۱. بکآپ بگیر: همیشه قبل از تغییر فرمولها، یه نسخه پشتیبان از فایلت داشته باش.
۲. با فرمولهای ساده شروع کن: فرمولهای VLOOKUP ساده رو یکییکی با XLOOKUP جایگزین کن.
۳. تست کن: نتایج رو با هم مقایسه کن—باید دقیقاً یکسان باشن.
فرمول تبدیل
| VLOOKUP | XLOOKUP معادل |
| =VLOOKUP(A2, B:D, 2, FALSE) | =XLOOKUP(A2, B:B, C:C) |
| =VLOOKUP(A2, B:D, 3, FALSE) | =XLOOKUP(A2, B:B, D:D) |
| =IFERROR(VLOOKUP(A2, B:D, 2, FALSE), “پیدا نشد”) | =XLOOKUP(A2, B:B, C:C, “پیدا نشد”) |
⚠️ مشکلات رایج در مهاجرت
۱. اندازه نابرابر آرایهها: lookup_array و return_array باید دقیقاً هماندازه باشن.
۲. تغییر رفتار Approximate Match: VLOOKUP با TRUE فقط Exact یا بزرگترین نزدیک رو برمیگردونه. XLOOKUP حالتهای بیشتری داره—باید match_mode مناسب رو انتخاب کنی.
۳. Spilled Arrays: XLOOKUP میتونه چندین مقدار رو همزمان برگردونه. اگه فضای کافی برای spill کردن نباشه، با خطای #SPILL! مواجه میشی.
۴. سازگاری با نسخههای قدیمی: اگه فایلت رو با کاربران Excel 2019 یا قدیمیتر به اشتراک میذاری، اونها #NAME? میبینن.
۹. مشکلات رایج و رفع آنها
مشکلات VLOOKUP
| مشکل | علت | راهحل |
| #N/A | مقدار پیدا نشد | چک کن نوع داده (عدد vs متن)، فضای خالی، Exact Match |
| #REF! | شماره ستون نامعتبر | col_index_num رو اصلاح کن |
| #VALUE! | مقدار جستجو نامعتبر | lookup_value رو بررسی کن |
| نتیجه اشتباه بعد از اضافه شدن ستون | col_index_num ثابت | شماره ستون جدید رو محاسبه کن |
مشکلات XLOOKUP
| مشکل | علت | راهحل |
| #NAME? در نسخههای قدیمی | Excel 2019 یا پایینتر | از VLOOKUP یا INDEX/MATCH استفاده کن |
| #VALUE! | اندازه نابرابر آرایهها | طول lookup_array و return_array رو یکسان کن |
| #SPILL! | فضای کافی برای spill کردن نیست | سلولهای اطراف رو خالی کن |
| #N/A با وجود مقدار | عدم تطابق Exact Match | match_mode رو چک کن (پیشفرض ۰) |
🎯 نکته عیبیابی: در VLOOKUP، یکی از رایجترین مشکلات، عدم تطابق نوع داده است—وقتی مقدار جستجو عدد هست ولی توی ستون جستجو بهصورت متن ذخیره شده (یا برعکس).
۱۰. ❓ سوالات متداول (FAQ)
سوال ۱: آیا XLOOKUP واقعاً جایگزین کامل VLOOKUP است؟
در بیشتر موارد بله. اما VLOOKUP هنوز برای سازگاری با نسخههای قدیمی، فایلهای اشتراکی، و برخی سناریوهای performance ضروری است.
سوال ۲: XLOOKUP روی چه نسخههایی از اکسل کار میکند؟
فقط Microsoft 365 و Excel 2021 یا جدیدتر. Excel 2019 و نسخههای قدیمیتر XLOOKUP ندارند.
سوال ۳: آیا میشود XLOOKUP را با VLOOKUP در یک فایل ترکیب کرد؟
بله! میتوانید هر دو تابع را در یک Workbook استفاده کنید، به شرطی که نسخه Excel شما از XLOOKUP پشتیبانی کند.
سوال ۴: کدام یک برای فایلهای اشتراکی بهتر است؟
VLOOKUP. XLOOKUP در نسخههای قدیمی Excel باعث خطای #NAME! میشود.
سوال ۵: آیا XLOOKUP همیشه سریعتر است؟
خیر! در Exact Match ساده، VLOOKUP میتواند تا ۴۰٪ سریعتر باشد. اما XLOOKUP با Binary Search میتواند بسیار سریعتر عمل کند.
سوال ۶: چطور خطای #N/A را در VLOOKUP مدیریت کنم؟
با IFERROR یا IFNA:
=IFERROR(VLOOKUP(A2, B:D, 2, FALSE), “پیدا نشد”)
اما XLOOKUP این قابلیت را بهصورت داخلی دارد.
سوال ۷: آیا میشود XLOOKUP را با فرمت قدیمی xls. ذخیره کرد؟
بله، اما اگر فایل با Excel 2019 یا قدیمیتر باز شود، فرمولهای XLOOKUP با خطا مواجه میشوند.
۱۱. مسیر حرفهای شدن در اکسل
تبریک میگم! تو الان میدونی که VLOOKUP و XLOOKUP هر کدوم چه نقاط قوت و ضعفی دارن، و در چه سناریویی باید از کدوم استفاده کنی. این مهارت یکی از پرتقاضاترین تواناییها در بازار کار ایران محسوب میشه.
🎯 چه مهارتهایی میتونی یاد بگیری؟
| مهارت | کاربرد | بازار کار |
| Excel مقدماتی تا پیشرفته | فرمولنویسی، Pivot Table، نمودار | حقوق ۸ تا ۲۵ میلیون |
| توابع جستجو (VLOOKUP, XLOOKUP, INDEX/MATCH) | تحلیل داده، گزارشگیری | استخدام در هر سازمان |
| Power Query و Power Pivot | ETL، مدلسازی داده | تحلیلگر داده (حقوق ۲۰+ میلیون) |
| ICDL | مهارتهای هفتگانه | پایه تمام مشاغل اداری |
| داشبورد در اکسل | Power Query، Power Pivot | تحلیلگر داده (حقوق ۲۰+ میلیون) |
📞 پیشنهاد ویژه
🎁 برای خوانندههای این مقاله:
- جلسه اول رایگان: کیفیت آموزش ما رو بدون هیچ هزینهای ببین.
- مشاوره رایگان: مسیر یادگیری مخصوص خودت رو پیدا کن.
📝 جمعبندی نهایی
توی این راهنمای جامع یاد گرفتی که:
✅ VLOOKUP و XLOOKUP هر کدوم چطور کار میکنن و چه ساختاری دارن
✅ ۱۰ تفاوت کلیدی بین این دو تابع رو با جدول مقایسه کردی
✅ عملکرد واقعی (با اعداد و ارقام) رو بررسی کردی—XLOOKUP همیشه سریعتر نیست!
✅ میدونی در چه سناریوهایی باید از VLOOKUP استفاده کنی و کجا XLOOKUP بهتره
✅ تکنیکهای پیشرفته هر دو تابع رو یاد گرفتی
✅ میتونی از VLOOKUP به XLOOKUP مهاجرت کنی، بدون اینکه فرمولهات خراب بشن
✅ مشکلات رایج رو میتونی عیبیابی کنی
یادت باشه: XLOOKUP آینده جستجو در اکسل هست، اما VLOOKUP هنوز بخش مهمی از گذشته و حالِ Excel محسوب میشه. مثل یه مکانیک حرفهای که هم آچار قدیمی رو بلده، هم با جدیدترین ابزارها کار میکنه—تو هم باید هر دو رو مسلط باشی!


