
تابع match در اکسل
برای اینکه به یک فرمول نویس حرفه ای در اکسل تبدیل بشید، علاوه بر اینکه باید به اصول و قواعد فرمول نویسی حرفه ای آشنا باشید، باید به یک سری توابع خاص نیز مسلط باشید. یکی از اون توابع خاص، تابع Match در اکسل از دسته توابع Lookup & Reference هست. درک مفهوم این تابع خیلی اهمیت داره. چرا که در حل خیلی از مسائل و در فرمول نویسی ترکیبی، از این تابع استفاده میشه. این تابع مکان یک داده رو در یک محدوده تک بعدی به ما میده. یعنی چی؟
فرض کنید در شکل ۱، میخوایم ببینیم کلمه “شعبه۳” چندمین سل در این محدوده است و انتظار داریم که خروجی فرمول، عدد ۳ باشد، چرا که این کلمه (شعبه۳)، سومین سل در محدوده مورد نظر است.

شکل ۱- پیدا کردن مکان کلمه “شعبه۳”
تشریح آرگومان ها
Lookup_Value: عبارتیست که میخواهیم ببینیم چندمین سل در محدوده مورد نظر است. در مثال بالا، کلمه شعبه ۳ است.
Lookup_Array: آرایه ای است تک بعدی که در آن، دنبال عبارت Lookup_Value می گردیم. در مثال بالا، B2:G2 هست.
[Match_Type]: سه مقدار ۱، ۰ و -۱ میگیرد:
مقدار ۰ ، اولین داده ای که دقیقا معادل Lookup_Value هست رو پیدا میکنه و شماره مکانشو میگه. در این حالت توالی قرارگیری محتوا در Lookup_Array به هر طریقی می تواند باشد.
مقدار ۱ (حالت پیش فرض، یعنی با خالی گذاشتن آرگومان سوم، این حالت در نظر گرفته می شه)، اگر عین عبارت رو پیدا نکنه، بزرگترین مقدار کوچکتر و یا مساوی Lookup_Value را پیدا و جایگاهش رو میده.
در این حالت مقادیر درون Lookup_Array باید به صورت صعودی باشند. به عنوان مثال: -۲، -۱، ۰، ۱، ۲، …
مقدار ۱-، اگر عین عبارت رو پیدا نکنه، بزرگترین مقدار کوچکتر و یا مساوی Lookup_Value را پیدا و جایگاهش رو میده.
در این حالت مقادیر درون Lookup_Array باید به صورت نزولی مرتب شده باشند. به عنوان مثال: ۲، ۱، ۰، -۱، -۲، …
در مثال بالا، تابع به اینصورت نوشته میشه:
=Match(D2,B2:G2,0)
خروجی این تابع ۳ خواهد بود. چون همونطور که توضیح داده شد، کلمه شعبه۳، سومین سل در محدوده مورد نظر است.
دقت داشته باشید که Lookup_Array، حتما یک محدوده تک بعدی، یعنی یک ستون یا یک ردیف باید باشه.
چون خروجی تابع Match، عدد هست، با اکثر توابعی که آرگومان هایی از جنس عدد دارن قابلیت ترکیب داره. یکی از این ترکیب های کاربردی رو در مثال زیر می بینیم:
ترکیب تابع Match و تابع Vlookup
همونطور که میدونید آرگومان سوم در تابع Vlookup ، یا همون Col_Index عدد هست. پس میتونیم از تابع Match توی این آرگومان استفاده کنیم. همون مثال تشریح شده در تابع Vlookup رو در نظر بگیرید. میخواهیم تابع رو طوری بنویسیم که با تغییر سل H2، جواب نیز تغییر کنه. یعنی (مطابق زیر) هر بار محاسبه بشه که عبارتی که در سل H2 نوشته میشه، چندمین سل در محدوده A1:E1 است.

برای این کار در آرگومان سوم Vlookup از تابع Match استفاده می کنیم.
=Vlookup(G3,A1:E16,Match(H2,A1:E1,0),0)
با این کار شماره ستون در تابع Vlookup رو وصل میکنیم به تابع Match که هر بار با تغییر H2، محاسبات بروز شود.

شکل ۲- ترکیب تابع Match و Vlookup
خب، ماهیت تابع Match در اکسل رو با یک ترکیب کاربردی شرح دادیم. این تابع یکی از مهم ترین توابع جستجو به حساب میاد که تسلط به آن، در حل خیلی از مسائل کمک کننده خواهد بود.





سلام و درود
سوالی داشتم ؟
فرض کنیم کسلی از دانش آموزان کلاسی ۳۰ نفره داریم . که نمرات دروس فیزیک، ریاضی، شیمی ، زبان ، هندسه و فارسی آنها در این اکسل کنار اسامی در ستونهای مختلف درج شده است. حال اگر بخواهیم فرد یا افرادی که بیشترین نمره و یا کمترین نمره در درس ریاضی را گرفته اند ه دستوراتی لازم داریم ؟ و به همین ترتیب برای دروس دیگر در شیت های بعدی بتونیم انجام بدهیم . با تشکر از شما
mehdi_bu58@yahoo.com
درود بر شما
اگر unpivot کنید و دیتابیس ماتریسی نباشه خیلی راحت با پیوت میشه
اما در این حالت با ترکیب match, index و یا اگر فرمول نویسی آرایه ای میدونید، با اون میتونید انجام بدید
به این ترتتیب که با تابع max و min بیشترین و کمترین نمره رو پیدا کنید
بعد با match مکانشو پیدا کنید و بعد با index اسم دانش اموز رو مشخص کنید
برای همه این موارد نمونه های زیادی داخل سایت ارائه شده. در ادامه لینک ها رو قرار میدم
https://excelpedia.net/index-function/
https://excelpedia.net/match-function/
https://excelpedia.net/index-function-tricks/
https://excelpedia.net/unpivot-data/
با سلام و احترام
در محیط VBA خط برنامه زیر را نوشته ام (هدفم اختصاص دادن خروجی Match به یک متغیر عددی است)
Col = WorksheetFunction.Match(5045, “H7:L7”, 0)
اما با پیغام زیر مواجه میشم
Unable to get the Match property of the WorksheetFunction class
علت چیست؟
با تشکر
درود
کلمه range رو قبل از محدوده match نذاشتید
WorksheetFunction.Match(943, Range(“A:A”), 0)
سلام وقتتون بخیر
من یه فرمول نوشتم که match index میره قاعدتا از سسر اول میگرده پیدا میکنه
من میخوام این جستجو رو از سطر آخر اون table انجام بده
چجوری میتونم اینکارو انجام بدم؟
ممنونم
درود
یا میتونید از تابع Xmatch در ورژن ۲۰۲۱ استفاده کنید
یا از فرمول نویسی آرایه ای استفاده کنید
برای این موضوع مقاله جستجوی موارد تکراری رو ببینید
با عرض سلام و خسته نباشید من ی جدول فروش دارم که طبق تاریخه و فروش در هر تاریخ بین ۶ تا ۷ مورد یا بیشترم میشه حالا میخوام که گزارش فروش به تفکیک تاریخ بگیرم که مثلا فلان تاریخ فروش چقدر بوده و مبلغ فروش به کجا رفته مثلا از طریق کارتخوان بوده یا واریز به حساب و … از طریق کدوم فرمول اینکارو بکنم لطفا کمکم کنید چون خیلی درگیرشم اگه لطف کنید فرمولشم بفرستید ممنون میشم
سلام
برای ایجاد این گزارش حتما از Pivot Table استفاده کنید.