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

مقایسه دو لیست در اکسل
۴.۸/۵ - (۲۵ امتیاز)

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

مشخص کردن موارد مشترک حالت های مختلفی دارد:

۱- می توان موارد مشترک را از طریق فرمول نویسی بصورت جداگانه لیست کرد.
۲- می توان با فرمول نویسی سل روبروی هر مورد مشترک را متمایز کرد.
۳- می توان موارد مشترک در یک لیست را با تغییر رنگ خاصی متمایز کرد.

در این آموزش نحوه متمایز کردن موارد مشترک از طریق اعمال فرمت (رنگ سل) را شرح می دهم:

مطابق شکل ۱ لیستی از نام شهرها داریم (لیست۱). حالا میخواهیم شهرهایی از لیست ۱ که در لیست ۲ وجود دارند را رنگی کنیم.

داده های موجود برای مقایسه

شکل ۱- مقایسه دو ستون در اکسل – داده های موجود برای مقایسه

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

برای اینکه بتوانیم تشخیص دهیم کدام شهر از لیست ۱ در لیست ۲ وجود دارد، کافیست تعداد هر شهر از لیست ۱ را در لیست ۲ شمارش کنیم. مثلا باید فرمولی بنویسیم که تعداد اصفهان را در لیست ۲ شمارش کند. اگر بیش از صفر باشد، یعنی آن شهر در لیست ۲ تکرار شده است و اگر صفر باشد یعنی آن شهر در لیست ۲ وجود ندارد. پس با استفاده از تابع Countif این کار را انجام می دهیم:

=COUNTIF($D$2:$D$5,B2)

خروجی این تابع صفر است زیرا شهر اصفهان در لیست ۲ وجود ندارد.

حالا برای اینکه در صورت موجود بودن، فرمت مورد نظر بر روی سل اعمال شود، باید شرط را بصورت منطقی دربیاوریم. که اگر شرط برقرار بود فرمت اعمال شود. پس تابع Countif را با IF ترکیب می کنیم:

=if(COUNTIF($D$2:$D$5,B2)>0,1,0)

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

روی سل B2 قرار گرفته و از مسیر زیر و مطابق شکل ۲، فرمول بالا را وارد می کنیم و فرمت دلخواه را از قسمت Format تنظیم میکنیم و Ok را می زنیم:

Home> Conditional_Formatting> New Rule> Use a formula to determine which cells to format

استفاده از Conditional Formatting

شکل۲- مقایسه دو ستون در اکسل – فرمول نویسی در Conditional Formatting

حالا کافیست شرط مورد نظر را به محدوده لیست ۱ انتقال دهیم. برای این کار ۲ روش وجود دارد:

  • Format Painter : بر روی سل B2 قرار می گیریم و از تب Home گزینه format painter را کلیک کرده، سپس محدوده مورد نظر برای اعمال فرمت را انتخاب میکنیم. (که در اینجا کل لیست۱ یا محدوده B2:B13 است)
  • مطابق شکل ۳ و از مسیر زیر، محدوده اعمال فرمت شرطی مورد نظر را تنظیم می کنیم:

Home> Conditional_Formatting> Manage Rule> Applies to

گسترش Conditional Formatting در شیت

شکل۳- مقایسه دو ستون در اکسل – تنظیم محدوده مورد نظر برای اعمال فرمت شرطی

با زدن Apply فرمت شرطی بر روی محدوده مورد اعمال می شود. یعنی مانند شکل ۴ شهر هایی که تعداد آنها در لیست ۲ بیش از صفر است رنگی می شود.

مقایسه دو لیست در اکسل - مقایسه دو لیست
شکل۴- مشخص شدن مواردی از لیست ۱ که در لیست ۲ وجود دارند

نکته:
می توان پس از انجام این مراحل، ستون لیست ۱ فیلتر کرده و از طریق  Filter By color و انتخاب رنگ اختصاص داده شده در Conditional Formatting، همه سل های رنگی شده را بصورت یکجا مشاهده کنیم یا حتی آنها را کپی کرده و در جای دیگری Paste کنیم.
134

من سامان چراغی هستم. دانش آموخته مقطع فوق لیسانس دانشگاه تربیت مدرس در رشته مهندسی صنایع. از سال 1388 اکسل و برنامه نویسی VBA رو به صورت حرفه ای شروع کردم.

دیدگاه کاربران
  • پروانه ۲۳ مهر ۱۳۹۷ / ۱۲:۵۰ ب٫ظ

    با سلام و روز بخیر
    ممنون از راهنماییتون
    من تابعی که گفتید را خوندم و کلا منطق توابع MATCH و INDEX را تا حدود زیادی متوجه شدم
    فقط یک موردی که اصلا نتونستم متوجه بشم و سوالش باقی موند اینه که اگر تعدد تکرار چند محصول با هم برابر باشه مثلا سه تا محصول بیشترین تکرار را داشته و هر سه ،۳ بار تکرار شده اند ولی یکی از انها نمایشداده میشه.من اصلا نتونستتم بفهمم چطوری میشه که هر سه تا اونها نشون داده بشن
    با سپاس فراوان

    • سامان چراغی ۲۳ مهر ۱۳۹۷ / ۸:۴۵ ب٫ظ

      سلام
      با فرض اینکه فرمول رو در سلول C2 نوشته باشید و لیست شما در محدوده A1:A12 نوشته شده باشه

      =IFERROR(INDEX($A$2:$A$12,MATCH(0,COUNTIF($C$1:C1,$A$2:$A$12)+(COUNTIF($A$2:$A$12,$A$2:$A$12)<>MAX(COUNTIF($A$2:$A$12,$A$2:$A$12))),0)),"")
      
  • پروانه ۲۳ مهر ۱۳۹۷ / ۱۱:۱۲ ق٫ظ

    با سلام و روز بخیر
    تابعی آرایه ای که نوشته بودیم برای پر تکرار ترین محصولات را با راهنمایی شما مطالعه و تحلیل کردم و یکی از سوالاتم حل شد.فقط یک مشکلی که با قی مانده و نتونستم بفهمم چطور میشه حلش کرد اینه که اگر چند تا محصول تعدد تکرارشون با هم برابر باشه چطوری میشه همه اونها نمایش داده بشه؟
    کل فایل های اموزشی توابع MATCH و INDEX را مطالعه کردم ولی به نتیجه نرسیدم

  • پروانه ۲۲ مهر ۱۳۹۷ / ۸:۳۹ ق٫ظ

    باا سلام و احترام
    خیلی خیلی ممنونم که با حوصله به سوالات ما جواب میدهید
    فرمولی که محبت کردید گفتید را استفاده کردم و مشکلم حل شد دو سوال دیگه پیرو سوال دیروزم داشتم.
    ۱-اگر تعدد تکرار چند محصول با هم برابر باشد مثلا سه تا محصول بیشترین تکرار رو داشتند و من میخوام هر سه تا نشون داده بشه ولی الان فقط یک محصول نشوون داده می شود
    ۲-میخوام یک شرط دیگه اضافه کنم و اونم اینه که میخوام پر تکرار ترین محصول که مثلا برای یک شرکتی هست را نشون بدهد( البته نام شرکت د رستون کنارش مشخص شده است.)چطوری میتونم این قیدد را اضافه کنم؟

    • آواتار
      حسنا خاکزاد ۲۲ مهر ۱۳۹۷ / ۹:۵۸ ق٫ظ

      درود بر شما
      سعی کنید فرمول رو تحلیل کنید و کارکردشو مرحله به مرحله متوجه بشید.
      بعد میتونید خواستتون رو پیاده کنید.
      هدف ارائه راه حل آماده نیست…هدف آموزش هست.
      موفق باشید

  • پروانه ۲۱ مهر ۱۳۹۷ / ۲:۱۵ ب٫ظ

    با سلام و احترام
    من در یک ستون اکسل نام یک سری از محصولات را نوشتم سوالم اینه که میشه از تابعی استفاده کرد که پرتکرار ترین محصول را دران ستون بخواند و نام آن را نمایش بدهد؟همچنین در ستون کنارش هم ایراد مربوط به آن محصول درج شده میشه از یک تابعی استفاده کرد که علاوه بر اینکه پر تکرار ترین محصول را نمایش بدهد پر تکرار ترین ایراد مربوط به آن محصول را هم نمایش بدهد؟
    با سپاس فراوان

    • آواتار
      حسنا خاکزاد ۲۱ مهر ۱۳۹۷ / ۲:۴۹ ب٫ظ

      درود بر شما
      این فرمول رو بصورت آرایه ای ثبت کنید. یعنی با ctrl+shift+enter

      =INDEX(H6:H31;MATCH(MAX(COUNTIF(H6:H31;H6:H31));COUNTIF(H6:H31;H6:H31);0))

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

  • aminrazagh ۲۴ شهریور ۱۳۹۷ / ۲:۲۷ ب٫ظ

    سلام من دو فایل اکسل دارم و میخواهم با هم مقایسه کنم که فایل اول دارای سه ستون(a,b1, c1) و فایل دوم دارای چهار ستون(a,b,c,d) است.(ستون های b1 , c1 بروز شده داده های ستون b ,c است) حال بعد از مقایسه من میخواهم فایل اکسل دیگری با ستون های d ,b1 , c1 داشته باشم…..ممنون از کمک وتوجه شما.

    • آواتار
      حسنا خاکزاد ۳۱ شهریور ۱۳۹۷ / ۱۱:۲۸ ق٫ظ

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

  • علی ۱۸ شهریور ۱۳۹۷ / ۴:۴۴ ب٫ظ

    سلام من یه سوال دارم
    یه سلول دارم که با توجه به انتخاب اون سلول بایستی بره خودکار از شیت اول سلول تابع index match رو برام انجام بده.
    من نمیتونم فرمولی پیدا کنم که این مدام شیت با تغییر سلول تغییر کنه و از اطلاعات شیت اصلی اطلاعات را برداره
    میشه کمکم کنین؟

    • آواتار
      حسنا خاکزاد ۱۹ شهریور ۱۳۹۷ / ۹:۲۳ ق٫ظ

      درود بر شما
      اصلا سوالتون مفهوم نیست

  • محمد ۲۶ فروردین ۱۳۹۷ / ۹:۱۸ ق٫ظ

    سلام
    مرسی درست شد.

  • محمد ۲۳ فروردین ۱۳۹۷ / ۱:۲۲ ب٫ظ

    سلام این که جواب نداد-الان همون مثالی که زدم با فرمول شما شد ۶که اشتباهه باید بشه ۱۶
    در واقع ۱۳۳ساعت کاری تقسیم بر ۸ساعت باید بشه

    • سامان چراغی ۲۳ فروردین ۱۳۹۷ / ۵:۰۲ ب٫ظ

      عدد ۵.۵۸ درسته، علتش اینه که اکسل هر روز رو ۲۴ ساعت میگیره، برای همین عدد ۱۳۳ ساعت رو بر ۲۴ تقسیم میکنه. شما روزتون ۸ ساعت تعریف شده پس باید عدد ۵.۵۸ رو در ۳ ضرب کنید که میشه ۱۶.۷۳

  • محمد ۲۲ فروردین ۱۳۹۷ / ۱۰:۴۵ ق٫ظ

    سلام -این سلول حاوی ساعات کارکرد میباشد(۱۳۳:۴۹:۰۰)ساعت-دقیقه-ثانیه چطوری اینو به روز تبدیلش کنم
    مرسی

    • سامان چراغی ۲۲ فروردین ۱۳۹۷ / ۱۲:۱۳ ب٫ظ

      سلام
      کافیه فرمت سلول رو به صورت number تغییر بدید.

  • سحر ۹ فروردین ۱۳۹۷ / ۴:۳۳ ب٫ظ

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

    • سامان چراغی ۹ فروردین ۱۳۹۷ / ۷:۰۷ ب٫ظ

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

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *