بهتر است که کار آموزش تابع VLOOKUP را از این نقطه آغاز کنیم که چرا این تابع این همه مهم است؟ و چرا باید هر کاربر اکسل آنرا در حد تسلط یاد بگیرد؟
اگر کسی تابع VLOOKUP، تابع SUMIFS و PIVOT را بلد نیست، اکسل را نمیداند.
پاسخ در توجیه اهمیت VLOOKUP ساده است.
تابع VLOOKUP برای ادغام دادهها در اکسل بکار میرود.
همیشه در اکسل دادههای ما در یک شیت متمرکز نیست. دادهها در شیت ها و فایل های مختلف پراکندهاند و همواره ما به گزارش و تحلیلی نیاز داریم که لازمه آن ادغام این اطلاعات پراکنده در یک شیت میباشد.
بگذارید مثال ساده ای بزنم. شما کارشناس برنامه ریزی تولید شرکتی هستید و دو فایل اکسل به دست شما میرسد. یکی از واحد بازرگانی و دیگری از انبار.
در فایل واحد بازرگانی اسامی و تعداد کالاهایی که مشتریان سفارش داده اند ، مشخص شده و در فایلی که از انبار دریافت کردهاید تعداد موجودی هر کالا در انبار مشخص است.
حال شما باید ابتدا این دادهها را با تابع VLOOKUP ادغام کنید تا بتوانید مشخص کنید که از کالا چند عدد باید تولید شود. یعنی باید تعداد سفارش هر کالا را با تعداد موجودی انبار مقایسه کنید و سپس تصمیم بگیرید که برنامه تولید آن کالا چگونه باید باشد.
مثال مشهور دیگر محاسبه مالیات حقوق در اکسل است. یعنی در یک شیت اطلاعات حقوقی افراد را دارید و در شیت دیگر جدول مالیاتی را و میخواهید که مالیات هر کسی را بر اساس آن جدول محاسبه کنید.
درک رفتار تابع VLOOKUP
کارنامه ساده زیر را در نظر بگیرید و سپس به این سوالات پاسخ دهید؟
الف) در جلوی اسم بهار در سومین ستون جدول چه مقداری نوشته شده است؟
ب) در جلوی کد دانش آموزی 2000 در دومین ستون جدول چه مقداری نوشته شده است؟
صرفنظر از اینکه پاسخ شما به این سوالات چیست، باید بگویم که شما در اینجا دقیقا کار تابع VLOOKUP را انجام دادهاید. یعنی یک چیزی را در این جدول پیدا کرده اید و سپس گفتید که جلوی آن چیز، چه مقداری وارد شده است.
بنابراین تابع VLOOKUP یک مقداری (که به آن معلوم میگوییم) را در یک جدول پیدا می کند و می گوید که جلوی آن مقدار چه مقداری تایپ شده است. دقیقا همان کاری که شما برای پاسخ به سوالات الف و ب انجام دادید.
خیلی ساده بود. من اگر تا یک هفته برای شما هزاران VLOOKUP بنویسم، به شما اطمینان می دهم که هیچ تعریف جدیدی در رفتار این تابع نخواهید یافت.
VLOOKUP یک چیزی را پیدا می کند و می گوید که جلوی آن چیست. فقط همین.
تفسیر واژه «جدول» در VLOOKUP
در سوالات الف و ب ما با ابهامی مواجه هستیم. سومین ستون جدول کجاست؟
به شما بگویم که تقریبا اشکال عمده دانشجویان در کلاس ها نکته ای است که شما هم با آن در همین ابتدا روبرو شده اید. پس خیلی نگران نباشید . در واقع حتما باید منظور از جدول و شمارگذاری ستون آن را برای شما مشخص کنم.
ستون معلوم ها، اولین ستون جدول است.
بگذارید به سوال های پرسیده شده با این تعریف ارائه شده پاسخ دهیم.
الف) در جلوی اسم بهار در سومین ستون جدول چه مقداری نوشته شده است؟
برای ما در این سوال نام دانشجو مشخص شده، بنابراین ستون معلوم های ما، ستون «نام دانش آموز» است و بنابراین اولین ستون جدول در اینجا «نام دانش آموز» خواهد بود و دومین ستون جدول در «فارسی» و سومین ستون جدول «قرآن» می باشد. پس پاسخ این سوال عدد 14.5 خواهد بود.
ب) در جلوی کد دانش آموزی 2000 در دومین ستون جدول چه مقداری نوشته شده است؟
برای ما در این سوال کد دانش آموز مشخص شده، بنابراین ستون معلوم های ما، ستون «کد دانش آموز» است و بنابراین اولین ستون جدول در اینجا «کد دانش آموز» خواهد بود و دومین ستون جدول «نام دانش آموز» و سومین ستون جدول «فارسی» می باشد. پس پاسخ این سوال عدد «علی» خواهد بود.
نکته: بسیاری از کاربران به اشتباه تصور می کنند که اولین ستون باید ستون A در اکسل باشد.
آموزش فرمول VLOOKUP
تابع VLOOKUP از شما 4 ورودی میخواهد و سپس به شما پاسخ را خواهد داد. بگذارید با حل قدم به قدم پرسش الف شروع کنیم.
در جلوی اسم بهار در سومین ستون جدول چه مقداری نوشته شده است؟
ورودی 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 که مایکروسافت آن را ارائه داده است استفاده کنید.
نویسنده: فرشید میدانی | فرساران
شما هم تجربه یا دیدگاه خود را بنویسید:
سلام و خسته نباشید. من در یک فایل اکسل 10 تا شیت دارم که تیتر همه ستونها یکی هست دقیقا . فقط شرحی که زیر ستونها نوشتم در هر شیت فرق میکنه . این فایل لیست کارهای من برای انجام هر پروژه است. و هر شیت به یک پروژه اختصاص دارد. من میخوام هر روز از هر شیت دو مورد را انتخاب کنم و در ستون قبل از شرح فعالیت مثلا بنویسم "TODAY" و لیست مواردی رو که در این 10 شیت کنارشون کلمه TODAY نوشته شده رو در یه شیت جداگانه به " برنامه روزانه" ببینم . یعنی تابعی میخوام که بره داخل این شیتها سرچ کنه و همه مواردی که من کنارش کلمه TODAY رو نوشتم برام در یک شیت لیست کنه تا بدونم امروز در مجموع چه کارهایی باید انجام بدم. ممنون میشم راهنماییم کنید
وقتی که می خواهید یک مقدار تکراری را با VLOOKUP بیابید باید از تکنیکهایی که اصطلاحا MULTI VALUE LOOKUP نامیده می شود استفاده کنید.
در کانال تلگرام یک ویدئو آموزشی برای یافتن مقادیر تکراری با VLOOKUP قرار داده شده است :
https://t.me/farsaran/36
خدا خیرتان بده چقدر خوب و قابل فهم مطالب را عنوان کردید و برای همه سنین قابل فهم من از شما خیلی ممنون هستم و علاقمند شدم بقیه را هم دنبال کننم
سلام
چگونه می توان خروجی تابع vlookup که بصورت N/A# در می آید را به عدد صفر تغییر داد.
می خواهم چند داده که بصورت متغییر هستند و توسط تابع vlookup استخراج کرده ام را با هم جمع کنم اما در بعضی مواقع 1 یا چند داده بصورت N/A# می باشند که جمع داده ها را با مشکل مواجه می کند. ممنون
سلام
تابع iferore به ابتدای فرمول تون اضافه کنید.
بله دقیقا با IFERROR می شود خروجی VLOOKUP را اگر خطا شود، کنترل کرد. صورت کلی آن اینگونه است:
=IFERROR( VLOOKUP(... , ... , ..., 0) , 0)
سلام. چطور میتونم فقط قسمتی از یه متن رو با این تابع بشناسم و جایگزین کنم؟به طور مثال متن سلولم به این شکل 1130CVB و من فقط میخوام قسمت عدد یعنی ۱۱۳۰ رو بشناسه و از توی جدول پیدا و جایگزین کنه.
می توانیم در داخل Vlookup از Wildcardها استفاده کنیم. فرمول شما می شود:
=VLOOKUP("*1130*", A:Z, 2, 0)
سلام من یه اکسل میخوام درست کنم که اگر مبلغ بین مثلا 10 تا 20 ملیون بود 10 درصد محاسبه کنه اگه بین 1 تا 10 ملیون بود 20 درصد محاسبه کنه و... چجوری میتونم بنویسم؟
سلام
به جرات ادعا میکنم یکی از ساده ترین آموزش ها بود
منتها اگه بخواهیم فرمول ویلوکاپ رو از یک فایل اکسل برای فایل دیگه بنویسیم، امکانش هست؟
فوق العاده بود جناب ميداني. سپاسگزاريم.
سلام من هرکاری انجام میدهم ویو لوکاپ رایاد نمی گیرم نمیدانم چه کارکنم
با سلام و تشکر از این استاد گرانقدر و باارزش
با ارزش بدلیل این که بسیاری از اساتید علی رغم علم بالا قدرت تفهیم مطالب را ندارند!
این مطلب فوق العاده ساده و دقیق تدریس شده بود و مشکلی که من سال ها داشتم و متوجه نمیشدم چرا این مساله هر بار که از این فرمول استفاده میکنم برام پیش میاد انقدر راحت و ساده توضیح دادند که من خیلی قدردانشون هستم .
موفق و پیروز باشید.
عالي بودددددددد
بسیار عالی بود
بسیار ممنون از شما بابت تدریس ساده و مفید.با شما ادامه می دهیم.
سپاس-چقدر عالی- بی نظر هستید- انشالله همیشه بدرخشید
سلام ممنون از راهنماییتون
توی تابع iferror اگر بخوایم توی خونه ای که n/a هست بگیم مثلا "رنگ اون سلول رو قرمز کن" امکانش هست؟
عالی بود اموزش
عالی و کامل بود روش تدریستون بسیار روان سلیس ممنونم
بسیار بسیار عالی!!!
ممنونم...
سلام ،خسته نباشید،سوال من اینست که چگونه می توان موردی را در جدول دیگر جستجو کرد که محل قرار گرفتن آن را دقیقاً نمی دانیم در چه ستون و سطری است؟ در صورت امکان راهنمایی بفرمایید،ممنونم.
دقیقا کار vlookup همین است که داده ای را که جای سطر آن را نمی دانید را بیابد.
اگر جای ستون را ندانید و فقط بدانید که عنوان ستون چیست، از تابع index , match باید استفاده کنید. در کانال تلگرام اکسل فرساران این ویدئوی آموزش را خواهید یافت.
از توضیح شفاف و ساده شما بهره بردم .سپاس
ممنونم، بسيار عالي بود
عالی بود
سلام
اگر تعداد سل هایی که در این تابع به آنها ادرس دهی میشوند بیشتر از یکی باشد چه باید کرد؟
مثلا اسم علی چند بار تکرار شده باشد و از بین آن ها بخواهیم حداکثر یا حداقل یا اصولا یک نمره خاص را پیدا کنیم.
ممنون
همواره vlookup اولین مقدار را می یابد، برای یافتن سایر مقادیر تکراری ، ویدئویی که در کانال تلگرام فرساران به آدرس زیر گذاشته ام را مشاهده بفرمایید:
https://t.me/farsaran/36
با سلام لطفا راهنمایی کنید چگونه می توان از یک شیت به شیت دیگر باوارد کردن کد جدولی را فراخوان نمود به عنوان مثال می خواهیم از شیت دروس مهارتهای هنرستانی در شیت رشته های هر هنرستان با ورود کد رشته مهارت جدول دروس را بارگذاری کرد
عالی و روان و بسیار خوب توضیح دادید ممنونم از شما و آرزو میکنم همیشه موفق باشید
=LOOKUP("10111012";'C:\Users\it.BORD\Desktop\[ListData.xlsx]10000'!$A$2:$A$10000;'C:\Users\it.BORD\Desktop\[ListData.xlsx]10000'!$G$2:$G$10000)
با سلام و خسته نباشید
من فرمول زیر را در یک فایل داده ام که باید کدهای 10111012 مانده اش را پیدا کند و بنویسد ولی متاسفانه کدی که مانده نداشته باشد در آن هم مانده کد مشابه را وارد می کند :
مثلا کد 10111012 مانده دارد می نویسد و کد 10111013 مانده نداشته باشد صفر نمی گذارد و مانده را می نویسد ، من چگونه می توانم مشخص کنم که مانده عین همین کد را بنویسد نه کدهای مشابه را
!!!! کسی از تابع LOOKUP استفاده نمیکند زیرا این تابع مشابه را پیدا میکند. از VLOOKUP استفاده کنید.
بسیار عالی و واضح بود به همراه نکته های ریز
با تشکر
ممنونم از بيان زيباي شما . هم آموختم و هم لبخند زدم. اما كاستي هايي داشت . مثلا جستجو در يك شيت ديگر را آموزش نداده بوديد.
آدرس دادن به یک شیت در حد مباحث اولیه و بسیار مقدماتی اکسل است و انتظار است که خواننده این مفاهیم اولیه را بداند. در هر حال برای آدرس دادن به یک شیت به نام DATA از شکل زیر استفاده میکنیم:
=VLOOKUP("BAHAR" , DATA!C:E , 3 , 0)
سلام
تابع lookup با داده متنی فارسی تعریف کردم که در قسمت حرف الف داده متناظر را صحیح نمی آورد.
مشکل از کجاست؟
اینگونه نیست. مشکل از جای دیگری است. معمولا وقتی که به حرف/کاراکتری شک میکنیم. با تابعی مانند UNICODE، کد آن حرف را بدست میآوریم و سپس با کد حرف "ا" مقایسه میکنیم. اگر متفاوت بود، حق با شماست و در اینجا باید قبل از vlookup نوشتن، متن ها را یکسان کنیم (مثلا با copy-past و یا توابعی مانند substitude و ...)
سلام بسیار ازتون تشکر میکنم به خاطر مطالب مفیدتون
یک سوال داشتم اگر هنگام وارد کردن ادرس اگر جدول موردنظر در صفحه دیگر بود باید چیکار کنیم هر چقدر میزنم ارور میده با سپاس از شما
خداوند خیرتون بده
چقدر واضح و شفاف توضیح داده بودید
یه کلاس رفته بودم ولی اصلا یاد نگرفته بودم
این عالی بود
بی نهایت سپاسگزارم
عالی بود ممنوووونم
سلام ممنون از آموش خوبتون
من میخواستم از این فرمول برای زدن فاکتور استفاده کنم یعنی وقتی نوشتم فاکتور شماره x از شیت قبلی که لیست این فاکتور هست مقادیر و برام پیدا کنه ولی نشد ممنون میشم راهنمایی کنید البته شما گفته بودین این فرمول اولین داده رو پیدا میکنه راه حل دیگه نداره
در قسمت نکتهها آدرس ویدئوی آموزشی که در کانال تلگرام است را نوشتم.
خیلی واضح ،کامل و عالییییی بود
بسيار عالي .سپاسگذارم بزرگوار
سلام و سپاس از شما
سلام
من دقیقا طبق مراحل پیش رفتم
اما باز جواب نگرفتم
پیشنهاد می کنم که با یکی از همکارانتان این مسائل را حل کنید تا آشنا شوید.
خیلی شفاف ئ واضح توضیح دادید. ممنونم
ولی چیزی که من میخواستم توضیح ندادید.
میخواستم عدد 0 آخر فرمول رو بدونم که چرا بعضی 1 بعضی 3 بعضی 0 میزارن.
بازم ممنون
مقدار 0 و FALSE یکی است . در مقاله زیر این نکته به صورت مفصلی توضیح داده شده است:
https://www.farsaran.com/node/294
باسلام و تشکر
درصورتیکه داده ها از دو شیت دیگه توی همین فایل باشن چیکار کنیم؟