تابع VLOOKUP اکسل - آموزش قدم به قدم و نکته‌هایی که باید بدانید

بهتر است که کار آموزش تابع VLOOKUP را از این نقطه آغاز کنیم که چرا این تابع این همه مهم است؟ و چرا باید هر کاربر اکسل آنرا در حد تسلط یاد بگیرد؟

من در دوره‌های آموزش اکسل همواره این را می گویم که :
اگر کسی تابع VLOOKUP، تابع SUMIFS و PIVOT را بلد نیست، اکسل را نمی­‌داند.

پاسخ در توجیه اهمیت VLOOKUP ساده است.

تابع VLOOKUP برای ادغام داده‌­ها در اکسل بکار می­رود.

 

همیشه در اکسل داده­‌های ما در یک شیت متمرکز نیست. داده‌­ها در شیت ها و فایل های مختلف پراکنده­اند و همواره ما به گزارش و تحلیلی نیاز داریم که لازمه آن ادغام این اطلاعات پراکنده در یک شیت می­‌باشد.

بگذارید مثال ساده­ ای بزنم. شما کارشناس برنامه ریزی تولید شرکتی هستید و دو فایل اکسل به دست شما می­رسد. یکی از واحد بازرگانی و دیگری از انبار.

در فایل واحد بازرگانی اسامی و تعداد کالاهایی که مشتریان سفارش داده اند ، مشخص شده و در فایلی که از انبار دریافت کردهاید تعداد موجودی هر کالا در انبار مشخص است.

حال شما باید ابتدا این داده‌ها را با تابع VLOOKUP ادغام کنید تا بتوانید مشخص کنید که از کالا چند عدد باید تولید شود. یعنی باید تعداد سفارش هر کالا را با تعداد موجودی انبار مقایسه کنید و سپس تصمیم بگیرید که برنامه تولید  آن کالا چگونه باید باشد.

مثال مشهور دیگر محاسبه مالیات حقوق در اکسل است. یعنی در یک شیت اطلاعات حقوقی افراد را دارید و در شیت دیگر جدول مالیاتی را و می‌خواهید که مالیات هر کسی را بر اساس آن جدول محاسبه کنید.

 

فایل اکسل آموزش VLOOKUP این مقاله را از انتهای همین صفحه دانلود کنید.

 

درک رفتار تابع VLOOKUP

کارنامه ساده زیر را در نظر بگیرید و سپس به این سوالات پاسخ دهید؟

جدول اکسل برای تابع VLOOKUP

 

الف) در جلوی اسم بهار در سومین ستون جدول چه مقداری نوشته شده است؟

ب) در جلوی کد دانش آموزی 2000 در دومین ستون جدول چه مقداری نوشته شده است؟

 

صرفنظر از اینکه پاسخ شما به این سوالات چیست، باید بگویم که شما در اینجا دقیقا کار تابع VLOOKUP را انجام داده­اید. یعنی یک چیزی را در این جدول پیدا کرده اید و سپس گفتید که جلوی آن چیز، چه مقداری وارد شده است.

بنابراین تابع VLOOKUP یک مقداری (که به آن معلوم می­گوییم) را در یک جدول پیدا می کند و می گوید که جلوی آن مقدار چه مقداری تایپ شده است. دقیقا همان کاری که شما برای پاسخ به سوالات الف و ب  انجام دادید.

خیلی ساده بود. من اگر تا یک هفته برای شما هزاران VLOOKUP بنویسم، به شما اطمینان می دهم که هیچ تعریف جدیدی در رفتار این تابع نخواهید یافت.

لطفا 10 بار جمله زیر را هر 8 ساعت یکبار با صدای بلند برای خودتان تکرار کنید:
VLOOKUP  یک چیزی را پیدا می کند و می گوید که جلوی آن چیست. فقط همین.

 

تفسیر واژه «جدول» در VLOOKUP

در سوالات الف و ب ما با ابهامی مواجه هستیم. سومین ستون جدول کجاست؟

به شما بگویم که تقریبا اشکال عمده دانشجویان در کلاس ها نکته ای است که شما هم با آن در همین ابتدا روبرو شده اید. پس خیلی نگران نباشید . در واقع حتما باید منظور از جدول و شمارگذاری ستون آن را برای شما مشخص کنم.

تعریف جدول و شماره گذاری آن در جمله زیر دقیقا مشخص است:
ستون معلوم ها، اولین ستون جدول است.

بگذارید به سوال های پرسیده شده با این تعریف ارائه شده پاسخ دهیم.

الف) در جلوی اسم بهار در سومین ستون جدول چه مقداری نوشته شده است؟

برای ما در این سوال نام دانشجو مشخص شده، بنابراین ستون معلوم های ما، ستون «نام دانش آموز» است و بنابراین اولین ستون جدول در اینجا  «نام دانش آموز» خواهد بود و دومین ستون جدول در «فارسی» و سومین ستون جدول «قرآن» می باشد. پس پاسخ این سوال عدد 14.5 خواهد بود.

 

شماره ستون های جدول اکسل در تابع VLOOKUP

 

ب) در جلوی کد دانش آموزی 2000 در دومین ستون جدول چه مقداری نوشته شده است؟

برای ما در این سوال کد دانش آموز مشخص شده، بنابراین ستون معلوم های ما، ستون «کد دانش آموز» است و بنابراین اولین ستون جدول در اینجا «کد دانش آموز» خواهد بود و دومین ستون جدول «نام دانش آموز» و سومین ستون جدول «فارسی» می باشد. پس پاسخ این سوال عدد «علی» خواهد بود.

 

شماره ستون معلوم ها در تابع VLOOKUP

 

نکته: بسیاری از کاربران به اشتباه تصور می کنند که اولین ستون باید ستون A در اکسل باشد.

 

آموزش فرمول VLOOKUP 

تابع VLOOKUP از شما 4 ورودی می­خواهد و سپس به شما پاسخ را خواهد داد. بگذارید با حل قدم به قدم پرسش الف شروع کنیم.

 در جلوی اسم بهار در سومین ستون جدول چه مقداری نوشته شده است؟

 

جدول اکسل برای تابع VLOOKUP

 

ورودی 1)

 در ابتدا VLOOKUP از شما مقدار معلوم را می­خواهد، پس خواهیم نوشت:

=VLOOKUP("BAHAR"

یادآوری: هر گاه در فرمولی یک متن نوشتیم باید آن متن در داخل علامت (دبل کوت) یعنی " " قرار گیرد.

 

ورودی 2)

 سپس VLOOKUP از شما می­خواهد که جدولی را برای جستجو مشخص کنید. (در واقع کاملا حق هم دارد، از کجا بدانید که در کدام شیت و یا ستون­ها باید جستجو را انجام دهد) . دقت داشته باشید که حتما باید این جدول دو شرط زیر را داشته باشد:

الف) اولین ستون جدول، ستونی باشد که مقادیر معلوم در آن تایپ شده است.

با توجه به تصویر چون نام دانش آموزان در ستون C وارد شده است، باید جدول ما از ستون C شروع شود.

ب) جدول شما شامل ستون مجهول ها هم باشد.

چون سومین ستون جدول (یعنی نمره قرآن) را باید پیدا می­کردیم، حتما باید جدول ما حداقل تا ستون E باشد. بنابراین ادامه تابع ما می­شود

=VLOOKUP("BAHAR" , C:E

یادآوری: علامت «:» در اکسل به معنای «تا» است. بنابراین C:E را باید بخوانیم ستون C تا E.

نکته: اگر جدول را بیشتر انتخاب کردیم مثلا نوشتیم C:Z، هیچ اشکالی ندارد.

 

ورودی 3)

 خوب حالا که معلوم و جدول را مشخص کردیم، نوبت می­رسد که به VLOOKUP بگوییم که مجهول ما کجاست. کافی است که جای ستون مجهول را به آن بگوییم. یعنی بگوییم در این جدول (یعنی C:E) سومین ستون حاوی مقداری است که ما آنرا لازم داریم. بنابراین باید بنویسیم:

=VLOOKUP("BAHAR" , C:E , 3

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

یادآوری: مجدد تاکید می­شود که شمارش ستون ها باید نسبت به «جدول» باشد.

 

ورودی 4)

این ورودی را فعلا طوطی وارد عدد 0 بگذارید. دلیلش را فعلا نپرسید. در این مقاله به صورت مفصل توضیح داده‌ام.

بنابراین شکل نهایی تابع VLOOKUP شما این خواهد شد:

=VLOOKUP("BAHAR" , C:E , 3 , 0)

و در پاسخ عدد 14.5 را خواهید داشت.

 

حل مساله ب)

سوال) در جلوی کد دانش آموزی 2000 در دومین ستون جدول چه مقداری نوشته شده است؟ فرمولش را بنویسید؟

فرمول شما به شکل زیر خواهد بود:

=VLOOKUP(2000 , B:F , 2 , 0)

حالا بگذارید من چند تا سوال بپرسم و مثلا شما پاسخ بدهید:

1) چرا 2000 را داخل علامت " "  قرار ندادید؟

پاسخ شما : چون یک عدد است و فقط متن ها را داخل علامت " "  می گذاریم.

 

2) چرا از ستون B، جدول را شروع کردید؟

پاسخ شما: چون معلوم ما در این مساله کد دانش آموزی است و این کدها در داخل ستون B قرار دارند و حتما باید ستون معلوم ها اولین ستون جدول ما باشد.

 

3) چرا جدول را B:C ننوشتید؟

پاسخ شما: اشکالی ندارید که ستون های بیشتری را در جدول انتخاب کنیم.

 

4) عدد 2 در فرمول بالا چیست؟

پاسخ شما: دومین ستون منطقه B:F است و مجهول های ما در این ستون قرار دارند.

 

5) عدد 0 در فرمول بالا چیست؟

پاسخ شما: استاد گفته 0 بگذارید و من گوش کردم. (برای دانستن معنای 0 مقاله «محاسبه مالیات حقوق در اکسل با تابع VLOOKUP» را مشاهده نمایید)

 

6) اگر VLOOKUP نتوانست چیزی را که مطمئن هستیم وجود دارد را بیاید، دلیلش چیست؟

پاسخ:  احتمال‌های زیر را بررسی کنید:

الف) احتمالا یک یا چند Space در داخل سلول معلوم وجود دارد با تابع trim این فاصله های اضافه را حذف کنید.

ب)   باید بدانید که عدد 1 با متن "1" برابر نیست. ممکن است شما در تابع عدد 1 را نوشته باشید اما در جدول ، این اعداد با Format Cells TEXT ، وجود داشته باشند. 

ج) حرف "ی" و "ک" را بررسی کنید.

نکات نهایی تابع VLOOKUP

نکته 1: حروف بزرگ و کوچک انگلیسی متفاوت نیستند. یعنی BAHAR = baHaR است.

نکته 2: عدد و متن متفاوتند. یعنی 2 = "2" نیست. به مقاله «گزینه text در Format Cells اکسل - دردسرها و راهکارها» و مقاله «فرمت و ظاهر اعداد در اکسل با Format Cells» برای تسلط بر این موضوع مطالعه کنید.

نکته 3: همواره فرض ما این است که یک مقدار معلوم وجود دارد. اگر مقادیر معلوم ها تکراری بودند، تابع vlookup اولین مقدار را می­یابد.

نکته 4: تابع vlookup از wildcard ها پشتیبانی می کند یعنی می­توانید به جای "bahar" بنویسید "*aha*" و یعنی سلولی که در آن aha وجود دارد.

نکته 5: توجه داشته باشید که دو حرف "ی" و "ک" در عربی و فارسی متفاوت هستند و در مقاله «اثر تفاوت حروف «ي» و «ك» عربی در اکسل روش تبدیل به «ی» و «ک» فارسی» این موضوع به تفضیل بررسی شده است.

نکته 6: تابع vlookup فقط می تواند رو به جلو جستجو کند. به همین دلیل است که همواره ستون معلوم ها را در ابتدای یک لیست می نویسیم. (برای یافتن مقادیر پشت سر مقدار معلوم باید از ترکیب دو تابع index  و match استفاده کنیم که در یک مقاله دیگر باید به آن پرداخت).

نکته 7: اگر اطلاعات شما در شیت دیگری بود مثلا شیتی به نام DATA، فرمول اینگونه خواهد شد:

=VLOOKUP(2000 , DATA!B:F , 2 , 0)

برای ارجاع به یک فایل دیگر هم، می توانید با موس محدوده داده‌های آن فایل را انتخاب کنید و فرمول شما چیزی شبیه زیر می شود. (داده‌ها در فایل به نامه MyFile در شیتی به نام Data هستند):

=VLOOKUP(2000 , [MyFile]DATA!B:F , 2 , 0)

نکته 8: اگر VLOOKUP مقدار یا نیابد به شما خطای N/A# می‌دهد. معمولا ما همواره در اکسل خطاها را مدیریت می‌کنیم و به جای خطا، یک چیز دیگری مثلا عدد 0 را می‌گذاریم. برای اینکار از تابع IFERROR مانند نمونه زیر استفاده می‌کنیم:

=IFERROR(  VLOOKUP(2000 , DATA!B:F , 2 , 0)   , 0)

نکته 9: همواره VLOOKUP اولین مقدار را می‌یابد. برای یافتن مقادیر تکراری می‌توانید از تکنیکی که در کانال تلگرام فرساران به آدرس https://t.me/farsaran/36 آموزش داده شده است، استفاده کنید.

 

نکته 10: بدیهی است که "فرشید میدانی" با "افشین میدانی" یکی نیست، اما شبیه هم هستند. برای یافتن مقادیر مشابه می‌توانید از افزونه Fuzzy Lookup که مایکروسافت آن را ارائه داده است استفاده کنید. 

 

نویسنده: فرشید میدانی | فرساران

شما هم تجربه یا دیدگاه خود را بنویسید:

محتوای این فیلد خصوصی است و به صورت عمومی نشان داده نخواهد شد.

متن ساده

  • تگ‌های HTML مجاز نیستند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
کد امنیتی
فرشید میدانی در تاریخ جمعه, 1398/03/17 - 12:49 نوشته:

در قسمت نکته‌ها پاسخ شما اضافه شد.

Sahand90 (تایید نشده) در تاریخ چهارشنبه, 1397/07/04 - 08:21 نوشته:

عالی بود، بسیار ممنووووووووووووون

حمزه نعیمی (تایید نشده) در تاریخ جمعه, 1397/06/30 - 11:50 نوشته:

با سلام
یه سوال
من یک جدول ۴ ستونی دارم و قانون VLOOKUP اینه که میتونیم توی ستون یک . که ما اسمی به نام (نازی) داریم رو سرچ کنیم و ستون مثلا ۲ هرچه باشه به ما نشون میده
حالا مشکل اینجاست که ما در ستون یک بیشتر از یک نام (نازی) داریم
ایا برای این کار میشود از فرمول VLOOKUP استفاده کرد یا نه
لطفا راهنمایی بفرمایید
ممنون از شما

فرشید میدانی در تاریخ جمعه, 1398/03/17 - 12:49 نوشته:

در قسمت نکته‌ها پاسخ شما اضافه شد.

مجیدقناعتیان (تایید نشده) در تاریخ پنجشنبه, 1397/06/22 - 14:25 نوشته:

عالی بود.

فرهاد ببرزاده (تایید نشده) در تاریخ شنبه, 1397/06/17 - 11:52 نوشته:

با سلام
یه سوال؟
در تابع VLOOKUP اگه مقداری پدا نکرد #N/A نشون میده چیکار کنم که بجای خطا صفر نشون بده؟
با سپاس فراوان

فرشید میدانی در تاریخ جمعه, 1398/03/17 - 12:50 نوشته:

در قسمت نکته‌ها پاسخ شما اضافه شد.

عباسی (تایید نشده) در تاریخ جمعه, 1397/06/09 - 10:04 نوشته:

بادرود-
کاملاًخلاصه ومفیدبود.سپاسگزارم

میلاد علی پناهی (تایید نشده) در تاریخ دوشنبه, 1397/06/05 - 11:06 نوشته:

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

کاظمی (تایید نشده) در تاریخ یکشنبه, 1397/06/04 - 16:55 نوشته:

با سلام مطالب عالی بود اما یک سوال .در فایلی ستونی دارم که اطلاعات آن به صورت کرکره ای انتخاب می شود مثلا اسامی همچون تلویزیون - یخچال - ماشین ظرفشویی - اسپلیت در آن وجود دارد و با باز نمودن کرکره یکی از این اسامی را انتخاب میکنم . اما هر کدام از این اسامی دارای مدلهای مختلفی هستند که این مدلهای برای هر کدام به صورت جداگانه در هر ستون وارد شده است و می خواهم وقتی نام تلویزیون را انتخاب کردم با دیدن این نام برود و ستونی را که مدلهای مختلف تلویزیون در آن نوشته شده را در سلول مقابل تلویزیون باز کند تا بتوانم برای آن تلویزیون مدل انتخاب کنم .
با فرمان vlookup چگونه این کار را انجام دهدم . تشکر

فرشید میدانی در تاریخ یکشنبه, 1397/06/04 - 21:59 نوشته:

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

habibe (تایید نشده) در تاریخ پنجشنبه, 1397/04/14 - 18:50 نوشته:

باتشکر از زبان رسا و ساده ای که بیان کردید یک سوال داشتم اگر ما بخاهیم این جستجو درشیت دیگزی انحام شود و تنها مقداری که پیدا کرد را درشیت حاصرثبت نماید چه باید کنیم؟

فرشید میدانی در تاریخ جمعه, 1398/03/17 - 12:52 نوشته:

پاسخ شما در قسمت نکته‌ها اضافه شد.

رئوفه مغنیان (تایید نشده) در تاریخ چهارشنبه, 1397/03/30 - 16:58 نوشته:

ضمن عرض سلام،آموزش بسیار روان و عالی بود ممنون ،اگر چنانچه آموزش پیشرفته تری درید لطفا آدرس آن را عنوان کنید. با تشکر

فرشید میدانی در تاریخ جمعه, 1398/03/17 - 12:51 نوشته:

برخی از فایل ها و آموزش ها را که در سایت نیست، در کانال فرساران به آدرس زیر می‌توانید بیابید:
https://t.me/farsaran

نگار (تایید نشده) در تاریخ دوشنبه, 1397/03/28 - 10:59 نوشته:

واقعا عااالی بود مخصوصا نحو0 بیان مطلب خدا خیرتون بده

سعید (تایید نشده) در تاریخ دوشنبه, 1397/03/14 - 21:50 نوشته:

با سلام ، واقعا عالی بود خیلی ممنون از توضیحات واضح و کاملتون

داود بهفر (تایید نشده) در تاریخ جمعه, 1397/03/11 - 17:44 نوشته:

ممنونم از توضیحات کامل و شفاف شما . کاملا متوجه شدم

accountant (تایید نشده) در تاریخ پنجشنبه, 1397/03/10 - 11:43 نوشته:

thank you so much

محمدرضا حیدری (تایید نشده) در تاریخ دوشنبه, 1397/03/07 - 12:48 نوشته:

مرسی که هستی با این حجم اطلاعات :-)))))))))))))))))))))))))))

سجاد قاسمی (تایید نشده) در تاریخ چهارشنبه, 1397/03/02 - 13:03 نوشته:

بسیار عالی بود
از بیان ساده و کاربردی شما سپاسگذارم

ایمان باقری (تایید نشده) در تاریخ یکشنبه, 1397/02/30 - 14:49 نوشته:

بسیار جالب بود . مرررررررسی

پسندیده (تایید نشده) در تاریخ جمعه, 1397/02/28 - 10:05 نوشته:

بسیار زیاد سپلسگزارم.تایید خدای یکتا همواره همراهتان و خیر هر دو دنیا شامل حالتان

ali........ (تایید نشده) در تاریخ سه شنبه, 1397/02/25 - 08:44 نوشته:

عالی بود

faeze (تایید نشده) در تاریخ شنبه, 1397/02/22 - 13:40 نوشته:

با سلام...
توضیحاتتون واقعا جامع بود و هر ابهامی که تو ذهن ممکن بود به وجود بیاد،پوشش می داد.
تشکر

محمد فاضل غرشی (تایید نشده) در تاریخ پنجشنبه, 1397/01/09 - 14:05 نوشته:

سلام قربان خوب هستین ممنون بابت کمکتون واقعا آموزش خوبی بود
جناب ببخشید امکانش هست مثل همین آموزشی که دادین این رو هم آموزش بدین که
چجوری میشه طبق همین جدولی که دادین برای لیست نمرات
مثلا از ستون کد دانش آموز مثلا کد 2000 رو توی یک سلول تایپ کنیم و بعد بقیه سلول ها که شامل نام دانش آموز و نمرات درس های مختلف هستند پر بشه
بسیار بسیار ممنون بابت کمک هاتون
اگه کمکم کنید ممنونتون میشم و به شدت منو در کارم جلو میندازین
ممنون

فرشید میدانی در تاریخ جمعه, 1397/01/10 - 10:29 نوشته:

دقیقا از همین تکنیک استفاده می شود و شما برای آوردن هر قلم اطلاعاتی مانند نام، نمره درس ریاضی ، باید یک Vlookupجداگانه بنویسید.

محمد فاضل غرشی (تایید نشده) در تاریخ جمعه, 1397/01/10 - 18:11 نوشته:

ببخشید یه سوال دیگه میشه تابع IF رو با تابع Vlookup ترکیب کرد ؟؟؟
یعنی مثلا ما بتونیم اطلاعاتی که در شیت 1 وارد کردیم را با نوشتن 1 عدد یا یک کد مانند 2000 که در شیت 1 این کد را داریم را در شیت 2 باز خوانی کنیم.
امکان این کار با ترکیب این 2 تابع آیا وجود دارد یا خیر ؟
ممنون از پاسخ گویی شما

فرشید میدانی در تاریخ جمعه, 1397/01/10 - 22:06 نوشته:

لازم به تابع جدیدی نیست . این کار دقیقا با Vlookup انجام می شود. مقاله را دقیق مطالعه کنید.

ابوذر محمدی پیراهی (تایید نشده) در تاریخ یکشنبه, 1397/01/05 - 13:17 نوشته:

درود بر شما
چقدر کاربردی و زیبا یاد دادید
وجود همانندهای شما مایه ی سربلندی میهن است

محمد2202 (تایید نشده) در تاریخ شنبه, 1396/12/05 - 01:22 نوشته:

سلام
الان اگر بخواهیم که کد کسی که نمره فارسی را 20 گرفته است بدست آوریم به صورت زیر می شود
vlookup(20,b:d,1,0)

فرشید میدانی در تاریخ دوشنبه, 1396/12/07 - 10:35 نوشته:

تابع Vlookup فقط جلوی خودش را می یابد و نمی تواند مقداری که پشت سرش وارد شده را پیدا کند. برای اینکار دو تابع index / match معمولا بکار می رود. فرمول مورد نظر شما می شود:

=INDEX(C:C,MATCH(20,D:D,0))

کامجو (تایید نشده) در تاریخ دوشنبه, 1396/11/30 - 10:21 نوشته:

با سلام
ممنون از تدریس این تابع مهم و کاربردی

شهاب (تایید نشده) در تاریخ شنبه, 1396/11/28 - 09:53 نوشته:

سلام.
بسیار عالی و شیرین درس دادید .ممنونم

الناز (تایید نشده) در تاریخ پنجشنبه, 1396/11/19 - 00:37 نوشته:

بسیار عالی ، ممنون.

مصطفی (تایید نشده) در تاریخ شنبه, 1396/11/14 - 14:18 نوشته:

سلام
واقعا ساده و روان بود. ممنون

محمد گودرزی (تایید نشده) در تاریخ پنجشنبه, 1396/11/12 - 16:18 نوشته:

ممنون از توضیح کاملتون. لذت بردم از روش تدریستون.

علي رضا (تایید نشده) در تاریخ چهارشنبه, 1396/09/22 - 18:26 نوشته:

واقعاً عالی بود . بنده از نحوه بیان مطالب خیلی خوشم آمد و بسیار استفاده بردم. با تشکر

حسنی (تایید نشده) در تاریخ شنبه, 1396/08/13 - 09:56 نوشته:

مثل همیشه عالی بود