آخرین ویرایش
10 مهر 99
زمان مطالعه
10 دقیقه
نویسنده
سهیل فتحی

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

خانه » آموزش اکسل » حل محدودیت تابع VLOOKUP در مقادیر جستجوی تکراری

سلام همراه گرامی

احتمالا شما هم مثل خیلی از کاربرای اکسل زمانیکه جدولی شامل داده های تکراری دارید و میخواهید از تابع Vlookup برای یافتن نتایج استفاده کنید، با مشکل مواجه شدید. بله؛ مشکل اینجاست که وقتی یک عبارت جستجو به تابع Vlookup میدیم و در ازای اون نتیجه متناظرش رو میخوایم، تابع Vlookup فقط اولین نتیجه رو برای برمیگردونه. تابع VLOOKUP در جستجوی مقادیر تکراری درست عمل نمیکنه.

تابع ویلوکاپ در نتایج تکراری

تابع ویلوکاپ در نتایج تکراری

مثلاً فرض کنید یک شرکت پخش هستیم و مشتریان ما فروشگاه هایی هستند که به تعداد دفعات مختلف ازمون خرید کردن و میزان خریدشون رو در جدول زیر ثبت کردیم. حالا میخوایم در جدول کناری نام هر فروشگاه رو که وارد میکنیم، تمام خربدهای اون (توجه کنید تمام خرید ها نه اولین خرید) مقابلش لیست بشن. خوب این چیزی که میخوایم مشابه کارکرد Vlookup هستش. اما بیاید با هم فرمول Vlookup رو براش بنویسیم.

مشکل تابع vlookup در داده های تکراری اکسل

مشکل تابع vlookup در داده های تکراری اکسل

در عکس بالا فرمول با تابع ویلوکاپ رو میبینید که اگر Enter رو بزنیم، نتیجه فرمول میشه 1200000؛ در نگاه اول میگیم اوکی شد اما وقتی به سمت پایین فرمول رو تعمیم میدیم تا خریدهای دیگه فروشگاه کوروش رو لیست کنیم، میبینیم که همون 1200000 تکرار میشه و اینجوری میشه که متوجه میشیم تابع ویلوکاپ در تشخیص نتایج بعدی مربوط به یک عبارت جستجوی تکراری عمل نمیکنه. (عکس زیر)

تابع vlookup و محدودیت آن در عبارات جستجوی تکراری

تابع vlookup و محدودیت آن در عبارات جستجوی تکراری

برای حل این مشکل باید از یک ستون کمکی و ترکیب تابع های Index و Small استفاده کنیم.

ایجاد سلول کمکی با استفاده از تابع IF

ابتدا در کنار ستون میزان خرید یک ستون کمکی ایجاد میکنیم. میخواهیم اگر مقدار جستجوی ما (سلول E3) برابر با هر سلول ستون B بود، شماره ردیف آن سلول در ستون کمکی درج شود و اگر برابر نبود سلول کمکی آن خالی بماند (چرا؟! در ادامه میفهمیم). مثلا در عکس پایین عبارت جستجو کوروش است. پس باید در ستون D، سلول های D5، D3 و D9 به ترتیب برابر 1، 3 و 7 باشند و بقیه سلول ها خالی. به این نحوه ما داریم سلول های موردنظرمان را نشانه گذاری میکنیم. احتمالاً میپرسید شماره ردیف D3 که 3 است پس چرا باید 1 قرار گیرد؟ چون جدول از ردیف 3 شروع شده ما از شماره ردیف ها 2 تا کم میکنیم. پس به صورت زیر با استفاده از تابع IF در اکسل فرمول نویسی میکنیم:

IF($E$3=B3,ROW()-2,””)

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

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

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

نتیجه این فرمول در ستون کمکی به صورت زیر است:

ستون کمکی برای حل مشکل تابع ویلوکاپ

ستون کمکی برای حل مشکل تابع ویلوکاپ

تشریح فرمول اصلی (ترکیب INDEX و SMALL)

خب! حالا نوبت فرمول نویسی اصلی رسیده. در سلول F3 فرمول زیر رو مینویسیم و در ادامه تشریحش میکنیم:

=INDEX($C$3:$C$10,SMALL($D$3:$D$10,ROW()-2)

در فرمول بالا با استفاده از تابع INDEX به اکسل گفتیم برو داخل سلول های C3 تا C10 بگرد و اون ردیفی که تابع SMALL میگه رو برگردون. در تابع SMALL هم گفتیم برو از بین سلول های D3 تا D10 که همون سلول های کمکی ما بودن، ROW()-2 امین سلول کوچک رو پیدا کن. بعد هم این فرمول رو تا پایین (اینجا تا سلول F5) تعمیم دادیم.

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

ترکیب تابع small و row در اکسل

ترکیب تابع small و row در اکسل

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

ترکیب تابع INDEX و SMALL در اکسل

ترکیب تابع INDEX و SMALL در اکسل

حالا اگر همین فرمول رو برای سلول های پایینتر (F4، F5 و …) بررسی کنیم، میبینیم که به درستی نتیجه مطلوب ما رو برمیگردونه.

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

ویدیوی آموزش حل محدودیت تابع Vlookup در مقادیر جستجوی تکراری

11 دیدگاه

  1. سلام
    ممنون از آموزش خوبتون
    من دقیقا این مشکل رو داشتم اما از این هم پیچیده تر
    چون نمیخوام دونه دونه نام مشتری رو تایپ کنم و خروجی بگیرم. میخوام در لیست اسامی نوشته شده ای که دارم ، بیاد و تمام خروجی هار و پشت سرهم بده!!
    یعنی برای A سه خروجی بده، برای B یک خروجی و برای C دو خروجی

    بدهی نام ______>>>>> نام
    12 A A ?
    B B 1 ?
    C C 18 ?
    C 202
    A 50
    A 25

    • سلام و عرض ادب
      ممنون از توجه شما

      اگر دقیق متوجه سوالتون شده باشم میتونید از جدولتون یک کپی تهیه کنید و اون رو بر اساس نام محصول SORT کنید.
      اگر با این روش مشکلتون حل نمیشه لطفا سوالتون رو با جزییات بیشتری مطرح کنید.

  2. خیلی ممنون
    اما این راهکار فقط برای داده های محدود جواب می ده که بخوای یکی یکی موارد رو تو سلول E3 بنویسی
    اگر بخوایم در سلول کناری E3 (نام فروشگاه) که در اینجا می شه F3 اولین خریدش رو بیاریم، در G3 دومین خرید، در H3 سومین خرید رو و به همین ترتیب…
    راهکاری داره؟
    هدف اینه که نام همه فروشگاه ها رو تو ستون E زیر هم بیاریم و در ستون های بعدی، هر کدوم از خریدهای همون فروشگاه درج بشه

  3. استاد عزیزم سلام ، ضمن عرض تشکر از شما ، اگر مقادیری که توسط تابع پیدا شد رو بخواهیم فقط در یک سلول نمایش بده و با عبارتی مثل کاما یا فاصله یا هرچیز دیگه ای جدا کنه امکانپذیره ؟یعنی در همون سلول F3 تمام خریدهای کوروش رو کنار هم با کاما جدا کنه و نمایش بده . از این منظر میگم که من محدودیت فضا برای محاسبه نتایج داده های تکراری دارم . به عبارتی یک جلسه با موضوع ثابت در تاریخ های متعدد برگزار شده و باید تاریخ های برگزاری جلسه فقط و فقط در ستون سوابق و سلول مقابل موضوع جلسه نمایش داده بشه

  4. سلام و عرض ادب
    برای تابع small ارور ref میده چون محدوده arrey من بیشتر از ۱۰۰۰ تا ردیف هست این ارور میده …. ممنون میشم راهنماییم کنید

    • سلام و عرض احترام
      تابع small محدودیت تعداد سلول در آرگومان array ندارد و احتمالا مشکل دیگری در فرمول نویسی شما وجود دارد.

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

دیدگاهتان را بنویسید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای مورد نیاز با * مشخص شده است

نوشتن دیدگاه