اگر تاکنون ناچار شدهاید یک فرمول یکسان را در صدها ردیف اکسل کپی کنید، حتماً میدانید این کار چقدر خستهکننده است. روش معمول، یعنی کشیدن فرمول، تنظیم ارجاع خانهها و امیدوار بودن به اینکه چیزی بههم نریزد، جواب میدهد؛ اما بههیچوجه بهینه نیست. تابع MAP اکسل این روند را دگرگون میکند. MAP بهجای اجرای فرمول روی تکتک خانهها، یکباره کل محدوده داده را پردازش میکند تا صفحهگستردههای اکسل مرتبتر و روند کارتان سریعتر شود.
قرار نیست شیوه انجام همه کارهایتان را از نو سامان دهید؛ MAP فقط راهی هوشمندانهتر برای رسیدگی به کارهای تکراری است. بنابراین، اگر برای عملیات آرایهای هنوز به فرمولهای سنتی متکی هستید، ارزش دارد MAP را امتحان کنید.
تابع MAP بخشی از توابع آرایه پویای اکسل است و برای اجرا به Excel ۳۶۵ یا Excel ۲۰۲۱ و نسخههای جدیدتر نیاز دارد. اگر از نسخهای قدیمیتر استفاده میکنید، این تابع در دسترس نخواهد بود.
تابع MAP چگونه کار میکند؟
همکاری MAP و LAMBDA

تابع MAP محدودهای از دادهها را میگیرد و محاسبهای سفارشی را یکباره روی کل مجموعه داده انجام میدهد. ساختار نوشتاری آن به این صورت است:
=MAP(array, lambda)
بیایید پارامترها را جداگانه بررسی کنیم:
- آرایه (array): محدوده خانههایی است که میخواهید پردازش شوند. این محدوده میتواند یک ستون، چند ستون یا حتی یک جدول کامل باشد. MAP تکتک مقادیر این محدوده را پیمایش میکند.
- لامبدا (lambda): محاسبه موردنظر را در این بخش تعریف میکنید. میتوانید آن را فرمول کوچکی در نظر بگیرید که به MAP میگوید با هر مقدار چه کند. این فرمول با تابع LAMBDA اکسل ساخته میشود؛ تابعی که به شما امکان میدهد منطق سفارشی را خوانا و طبیعی بنویسید، بیآنکه فرمولها را تکرار کنید.
وقتی MAP را اجرا میکنید، تابع لامبدای شما روی همه خانههای آرایه اعمال میشود و مجموعه تازهای از نتایج را برمیگرداند. اندازه و شکل خروجی با ورودی یکسان است؛ بنابراین اگر ۱۰ ردیف به آن بدهید، ۱۰ نتیجه دریافت میکنید.
تفاوت MAP با فرمولهای سنتی این است که به ارجاعهایی وابسته نیست که هنگام کپیکردن جابهجا میشوند. منطق محاسبه درون خود تابع ثابت میماند؛ در نتیجه، با جابهجایی دادهها خطر خرابشدن ناخواسته فرمول وجود ندارد.
کار با MAP را با یک نمونه ساده آغاز کنید
افزودن درصد افزایش قیمت با یک فرمول

فرض کنید فهرستی از قیمت محصولات دارید و باید قیمت هرکدام را ۱۰% افزایش دهید. در روش سنتی، فرمولی مانند =B2*۱.۱ مینویسید و آن را به ردیفهای پایین میکشید؛ اما MAP این کار را به شیوه دیگری انجام میدهد.
بهجای نوشتن چندین فرمول جداگانه، یک تابع MAP میسازید که کل ستون قیمت را پردازش میکند:
=MAP(B2:B11, LAMBDA(price, price*1.1))
روند کار چنین است: MAP هر مقدار موجود در B2:B11، یعنی محدوده قیمتها، را میگیرد و به تابع LAMBDA میدهد. LAMBDA هر مقدار را به متغیر «price» نسبت میدهد، آن را در ۱.۱ ضرب میکند و نتیجه را برمیگرداند؛ همه این کارها در یک مرحله انجام میشود.
مزیت این روش آن است که دیگر چندین فرمول جداگانه نمیسازید و هرگاه دادهها تغییر کنند، تابع MAP نتایج را خودکار از نو محاسبه میکند.
میتوانید متغیر LAMBDA را هرچه میخواهید بنامید. من «price» را انتخاب کردم، چون معنای روشنی دارد؛ اما «p» یا «x» نیز به همان خوبی کار میکنند. این متغیر فقط جایگاهی موقت برای نمایش هر مقداری است که MAP هنگام پردازش آرایه به آن میرسد.
افزودن منطق بیشتر به MAP با عبارت IF
میتوانید توابع دیگر را تودرتو کنید

MAP به محاسبات ساده محدود نیست. میتوانید توابع شرطی اکسل را درون تابع LAMBDA قرار دهید تا بر پایه دادهها، حالتهای گوناگون را مدیریت کنید.
فرض کنید میخواهید میزان افزایش قیمت را بر اساس قیمت محصول تعیین کنید. قیمت محصولات ۱۰۰ دلاری یا گرانتر ۱۰% افزایش مییابد، درحالیکه افزایش قیمت محصولات ارزانتر ۱۵% خواهد بود. این فرمول را به شکل زیر مینویسید:
=MAP(B2:B11, LAMBDA(price, IF(price>=100, price*1.1, price*1.15)))
همزمان با پردازش هر قیمت بهوسیله MAP، عبارت IF آن را بررسی میکند. اگر قیمت ۱۰۰ دلار یا بیشتر باشد، آن را در ۱.۱ ضرب میکند؛ در غیر این صورت، ضریب ۱.۱۵ را به کار میبرد.
در صورت نیاز میتوانید شرطهای بیشتری نیز روی هم قرار دهید. برای محاسبه مالیات، اعمال تخفیفهای پلکانی یا گردکردن اعداد تا تعداد مشخصی رقم اعشار، کافی است منطق لازم را در تابع LAMBDA بگنجانید. MAP آن را روی تکتک مقادیر آرایه اعمال خواهد کرد.
MAP از پسِ چندین ستون و دادههای متنی نامرتب برمیآید
بیایید فهرستی از نامها را با یک فرمول یکدست کنیم

کاربرد MAP به عملیات تکستونی محدود نیست. میتوانید چندین آرایه را به آن بدهید و همه را درون یک تابع، همزمان پردازش کنید.
فرض کنید میخواهید با ضرب قیمت در تعداد، فروش کل را محاسبه کنید. بهجای ساختن ستونی جداگانه برای فرمول، از MAP کمک بگیرید تا هر دو را با هم پردازش کند:
=MAP(B2:B11, C2:C11, LAMBDA(price, qty, price*qty))
MAP دو آرایهٔ B2:B11 (قیمتها) و C2:C11 (تعدادها) را میگیرد و آنها را ردیفبهردیف پردازش میکند. تابع LAMBDA هر دو مقدار را دریافت میکند، آنها را در هم ضرب میکند و نتیجه را برمیگرداند.
برای پاکسازی دادههای متنی نیز میتوانید از MAP استفاده کنید. اگر نام محصولات شما ناهماهنگ است—بعضی سراسر با حروف بزرگ، برخی با حروف کوچک و شماری دارای فاصلههای اضافیاند—بهآسانی میتوانید همه را یکجا یکدست کنید:
=MAP(A2:A11, LAMBDA(text, PROPER(TRIM(text))))
این فرمول فاصلههای اضافی را حذف میکند و نام هر محصول را به قالب نوشتاری درست درمیآورد. TRIM فاصلههای ابتدا و انتهای متن را میزداید، درحالیکه PROPER حرف نخست هر واژه را بزرگ میکند. MAP هر دو تابع را بهطور همزمان روی تمام سلولهای محدوده اعمال میکند.

MAP تازه آغاز راه است
جعبهابزار اکسل خود را گسترش دهید
وقتی کار با MAP را بهخوبی یاد بگیرید، فراگیری دیگر توابع کمکی LAMBDA مانند REDUCE، SCAN و BYROW/BYCOL نیز برایتان آسانتر میشود. همهٔ آنها بر یک اصل استوارند: پردازش آرایهها با منطق دلخواه، بهجای کشیدن فرمولها در سلولها.
مزیت این روش تنها به سرعت محدود نمیشود؛ بلکه به شما امکان میدهد صفحهگستردههایی بسازید که نگهداریشان آسانتر است. وقتی منطق کار درون یک تابع جای داشته باشد، کافی است آن را یکبار بهروزرسانی کنید تا تغییرات در همهجا نمایان شوند. پیشنهاد میکنم با کارهای سادهای مانند افزودن حاشیهٔ سود، محاسبات پایه و پاکسازی متن آغاز کنید. همین که سازوکار MAP برایتان جا بیفتد، فرصتهای استفاده از آن را همهجا خواهید دید.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Yasir Mahmood است. مشاهده مقاله اصلی