تابع فیلتر در اکسل چیست و چه کار می کند؟
به طور معمول چگونه از فیلتر در اکسل استفاده میکنید؟ احتمالا در بیشتر مواقع به کمک قابلیت Auto Filter و در مواقع خاصتر، این کار را با استفاده از فیلتر پیشرفته در اکسل انجام میدهید. با این که این دو روش سریع و قدرتمند هستند اما به طور خودکار بروزرسانی نمیشوند که ضعف بزرگی است. تابع فیلتر در اکسل ۳۶۵ تبدیل به جایگزین مورد انتظاری برای کارهای معمولی شده است. این تابع برخلاف روشهای قبلی، هر بار که صفحه کاری خود را عوض کنید، به طور خودکار، بروزرسانی خواهد شد، بنابراین یک بار نوشتن آن کافی است. در ادامه بیشتر با این تابع اکسل و کاربردهای آن آشنا خواهیم شد.
تابع فیلتر در اکسل
این تابع برای فیلتر کردن محدودهای از دادهها، بر اساس شرطی خاص، مورد استفاده قرار میگیرد. تابع فیلتر جزو توابع Dynamic Arrays اکسل محسوب میشود و نتیجه آن آرایهای از مقادیر است که به طور خودکار در محدوده سلولی نوشته میشود. سینتکس تابع فیلتر در اکسل به شکل زیر است:
آرگومانهای این تابع به شرح زیر هستند:
- Array: این آرگومان ضروری، برای وارد کردن محدوده یا آرایه مقادیر مورد نظر برای فیلتر است.
- Include: این آرگومان نیز ضروری است و برای وارد کردن شرط در قالب دوتایی (مقادیر True یا False) به کار میرود.
- If_empty: آرگومان اختیاری این فرمول است و در صورتی که هیچ مقداری با شرط مطابق نبود، خروجی خاصی را نشان میدهد.
توجه داشته باشید که این تابع روی اکسل ۳۶۵ و نسخه ۲۰۲۱ و پس از آن موجود است.
فرمول ساده تابع فیلتر در اکسل
در ابتدا میخواهیم با ذکر مثالهای ساده، بیشتر شما را با نحوه کار این تابع آشنا کنیم. فرض کنید مجموعه داده زیر را دارید و میخواهید دادههای مربوطه به «گروه C» را به دست بیاورید. برای انجام این کار باید عبارت B2:B13=”C” را به جای آرگومان Include بنویسیم که در نهایت یک آرایه بولین تولید خواهد کرد که در آن عبارت True، برابر با عبارت C است. به طور کلی یعنی تمام دادهها بر حسب «گروه C»، فیلتر میشوند.
اما در واقعیت بهتر است شرط خود را درون سلول دیگری، مثلا سلول F1، بنویسید. سپس به کمک ارجاع سلولی به آن دسترسی پیدا کنید. در مثال زیر، شرط خود را در سلول F1 نوشته و در فرمول به آن ارجاع دادهایم تا جدول دادهها بر اساس «گروه B» فیلتر شوند:
توجه داشته باشید که این فرمول را باید در اولین سلول از محدوده مورد نظر برای نمایش نتیجه، وارد کنید. چون برخلاف قابلیت Filter، این تابع تغییری در مجموعه داده اولیه ایجاد نمیکند. بلکه سلولهای فیلتر شده را در محدودهای انتخابی که Spill Range نام دارد، قرار میدهد. در نهایت نتیجه مانند تصویر زیر خواهد شد.
اگر هیچیک از دادهها با شرط مطابق نباشند، عبارت «No Results» در خروجی نشان داده خواهد شد، چون این عبارت را به جای آرگومان If-Empty قرار دادهایم.
اگر ترجیح میدهید در چنین شرایطی هیچ خروجی نشان داده نشود، میتوانید به جای این آرگومان از یک «رشته خالی» (“”) استفاده کنید. در این صورت، فرمول به شکل زیر تبدیل خواهد شد:
ممکن است داده شما به شکل افقی مرتب شده باشد، شبیه به چیزی که در تصویر زیر میبینید. در این شرایط نیز تابع Filter در اکسل به خوبی عمل خواهد کرد.
اما توجه داشته باشید که محدوده درستی برای آرگومانهای Array و Include فراهم کنید. برای دادههای مثال بعدی که به صورت افقی مرتب شدهاند، از فرمول زیر استفاده کردهایم:
نکاتی درباره استفاده از تابع فیلتر در اکسل
این تابع، دادههای نتیجه فیلتر را به طور خودکار به صورت عمودی یا افقی، برحسب چینش دادههای منبع، در سلولهای نهایی وارد میکند. به همین دلیل مهم است که مطمئن شوید در صفحه خود سلول کافی برای ورود نتیجه وجود دارد، در غیر اینصورت، با خطای Spill Error مواجه خواهید شد.
همچنین، نتایج تابع فیلتر در اکسل، پویا هستند. یعنی وقتی دادههای منبع تغییر کنند، نتایج نیز به طور خودکار، بروزرسانی خواهند شد. با این حال، محدوده ارائه شده برای آرگومان Array، تا زمانی که ورودیهای جدید به دادههای منبع اضافه نشده باشند، تغییری نخواهد کرد.
اگر میخواهید اندازه آرایه به طور خودکار عوض شود باید آن را به جدول اکسل تبدیل کرده و فرمولهایی با ارجاع ساختار یافته را به کار ببرید یا از محدودههای دارای نام استفاده کنید.
نحوه عملکرد تابع فیلتر در اکسل در شرایط مختلف
حالا که میدانید فرمول ساده این تابع به چه شکلی کار میکند، وقت آن است که از تابع فیلتر برای حل مشکلات پیچیدهتر کمک بگیریم و فرمولهای پیشرفتهتر را امتحان کنیم.
فیلتر کردن با چند شرط (منطق AND)
برای فیلتر کردن یک محدوده داده بر اساس چند شرط، باید بیشتر از یک عبارت منطقی را به جای آرگومان Include قرار دهیم که فرمول آن به شکل زیر تبدیل خواهد شد:
در این فرمول، عبارت (range1=criteria1) به معنی محدوده و شرط اول است و باقی شرطها نیز به همین شکل نوشته میشوند. در این فرمول از عملیات «ضرب» (*) برای پردازش آرایهها با منطق AND استفاده شده است. یعنی فقط دادههایی در خروجی نشان داده میشوند که تمام شرطها را برآورده کنند.
نتیجه هر عبارت منطقی، یک آرایه بولین است، یعنی عبارت True برابر ۱ و False برابر ۰ خواهد بود. سپس عناصر همه آرایهها در موقعیتهای مشابه، ضرب میشوند. از آنجایی که نتیجه ضرب در ۰، همیشه ۰ است، فقط مواردی که شرطهای آنها True یا ۱ باشد وارد آرایه نتیجه شده و در خروجی نشان داده میشوند.
در ادامه با ذکر مثال، این مفهوم را بیشتر توضیح میدهیم.
مثال۱، فیلتر کردن چند ستون در اکسل
مثال اول را کمی گسترش داده و میخواهیم این بار چند شرط را درون آن بگنجانیم. به عنوان مثال، قصد داریم دادهها را بر اساس دو ستون «گروه» و «بردها» فیلتر کنیم. برای انجام این کار، شرط اول یا گروه مورد نظر را در سلول F2 وشرط دوم یا حداقل تعداد برد را در سلول F3 مینویسیم.
حالا داده منبع ما در محدوده A2:C9 است، گروهها در محدوده B2:B9 هستند و و بردها در محدوده C2:C9 قرار دارند. فرمول به شکل زیر خواهد بود:
در نتیجه، لیست بازیکنانی را دریافت خواهید کرد که در گروه A هستند و تعداد بردهای آنها بیشتر یا مساوی ۲ بوده است.
مثال۲، فیلتر کردن داده بین دو تاریخ
ابتدا بهتر است بدانید که امکان ساخت یک فرمول عمومی برای فیلتر کردن بر اساس تاریخ در اکسل وجود ندارد. بلکه در موقعیتهای مختلف و بر حسب اینکه میخواهید بر اساس تاریخی خاص، ماه یا سال فیلتر کنید، باید معیارهای متفاوتی را به کار ببرید. هدف از این مثال نشان دادن رویکرد کلی است.
ستون جدیدی برای نمایش تاریخ آخرین برد به جدول مثال خود اضافه کردهایم. حالا میخواهیم بردهایی که در تاریخی خاص اتفاق افتادهاند را فیلتر کنیم، یعنی بین پنج بهمن تا ۲۵ بهمن سال ۱۴۰۱٫ توجه داشته باشید که در این مثال، هر دو شرط روی یک محدوده اعمال میشوند.
همان طور که میبینید، توانستیم تاریخها را درست به دست آوریم. اما قبل از انجام این کار، سلولهای مورد نظر در محدوده منبع و محدوده مقصد را به شکلی مناسب برای تاریخهای شمسی قالب بندی کردهایم.
فیلتر کردن با چند شرط (منطق OR)
برای به دست آوردن داده با منطق OR نیز مانند مثال قبل، از چند شرط استفاه میکنیم اما به جای ضرب، آنها را با هم جمع خواهیم کرد. به این شکل که وقتی آرایههای بولین که توسط عبارات شرط، به دست آمدهاند با هم جمع شوند، آرایه حاصل برای ورودیهایی که هیچ شرطی را برآورده نمیکنند (یعنی پاسخ همه معیارها برای آنها False است)، عدد ۰ خواهد شد. چنین ورودیهایی فیلتر میشوند و ورودیهایی که حداقل یکی از شرطها را برآورده کنند، نشان داده خواهند شد.
فرمول تابع فیلتر در اکسل برای چنین موقعیتی، به شکل زیر خواهد بود:
در ادامه برای مثال میخواهیم لیست بازیکنانی را به دستآوریم که تعداد بردهای مشخصی داشتهاند. مجموعه داده منبع در محدوده A2:C9 قرار دارد، بردها در محدوده C2:C9 هستند و تعداد بردهای مد نظر برای فیلتر کردن را نیز در سلولهای F2 و F3 نوشتهایم. برای رسیدن به نتیجه، از فرمول زیر کمک میگیریم:
در نتیجه میبینیم که کدام بازیکنها از کدام گروه، ۴ یا ۰ برد داشتهاند.
فیلتر کردن با شروط منطق OR و AND
اگر در شرایطی نیاز داشتید هم شرط OR و هم شرط AND را به کار ببرید، به خاطر بسپرید که شروط OR با «علامت مثبت» (+) و شروط AND با «علامت ستاره» (*) بههم وصل میشوند.
به عنوان مثال میخواهیم بازیکنانی را پیدا کنیم که چهار بار بردهاند و به «گروه A» یا «گروه C» تعلق دارند. برای رسیدن به نتیجه مطلوب باید فرمول زیر را به کار ببریم:
نحوه فیلتر کردن موارد تکراری در اکسل
مواقعی که با حجم زیادی از داده کار میکنید یا دادههای منابع مختلف را با هم ترکیب کردهاید، این احتمال وجود دارد که با موارد تکراری مواجه شوید. در صورتی که قصد دارید موارد تکراری را فیلتر کرده و به دادههای یکتا برسید، بهتر است از تابع UNIQUE کمک بگیرید.
اما اگر هدفتان از فیلتر کردن این است که بتوانید موارد تکراری را پیدا کنید، تابع Filter در اکسل میتواند بسیار کمک کننده باشد، در صورتی که همراه با تابع Contifs به کار رود. ایده اصلی این است که تعداد تکرار را برای همه دادهها به دست آوریم و سپس آنهایی را که بزرگتر از یک بودهاند، استخراج کنیم. برای انجام این کار باید محدوده یکسانی را برای هر جفت محدوده و شرط محدوده به کار ببریم.
به عنوان مثال برای پیدا کردن سلولهای تکراری در محدوده A2:A10، از فرمول زیر استفاده کردهایم:
نکته اینجا است که اگر میخواهید فقط موارد تکراری موجود در ستونهای کلیدی را بررسی کنید، فقط باید آن ستونها را درون تابع Countifs بنویسید.
نحوه فیلتر کردن سلولهای خالی در اکسل
یکی از روشهای مناسب برای فیلتر کردن سلولهای خالی در اکسل، استفاده از ترکیبی از تابع Filter با چندین شرط AND است. در این مورد بررسی میکنیم که آیا تمام ستونها (یا ستونهای مورد نظر)، دارای داده هستند یا خیر و سپس ردیفهایی را که حداقل یک سلول خالی دارند، حذف میکنیم. برای شناسایی سلولهای پر باید از عملگر «نا برابر با» (<>) همراه با دو «علامت نقل قول» (“”)کمک بگیریم.
در ادامه از این فرمول برای پیدا کردن ردیفهایی که یک سلول خالی یا بیشتر دارند و حذف ردیف های خالی در اکسل، کمک گرفتهایم:
فیلتر کردن سلولهای حاوی محتوای خاص
برای استخراج سلولهایی که حاوی متن خاصی هستند، از تابع Filter در اکسل به کمک دو تابع Isnumber و Search استفاده میکنیم.
در این ترکیب، ابتدا تابع Search در محدوده دریافتی به دنبال متن خاص مورد نظر جستوجو میکند. سپس یا عددی را به عنوان محل قرار گیری اولین حرف آن، در نتیجه میآورد یا اگر متن را نیافت، خطای Value را نشان میدهد.
در مرحله بعد، تابع Isnumber، تمام حروف را به عبارت True و خطاها را به False تبدیل کرده و آرایه خروجی بولین را به جای آرگومان Include در تابع Filter قرار میدهد.
در مثال بعدی، نام خانوادگی بازیکنان را در محدود B2:B6 قرار دادهایم، سپس بخشی از نام مورد نظر را درون سلول G2 نوشتهایم. حالا به کمک فرمول زیر، بازیکنانی را که نام خانوادگی متناسب با شرط دارند، پیدا میکنیم.
استفاده از تابع Filter در اکسل همراه با محاسبات
یکی از خوبیهای تابع Filter در اکسل این است که نه تنها دادهها را بر اساس شرطی خاص فیلتر و استخراج میکند، بلکه توانایی خلاصه سازی آنها را نیز دارد. به همین منظور در ادامه این تابع را با توابع جمع بندی Aggregation، مانند SUM ،AVERAGE ،COUNT ،Max و MIN ترکیب کردهایم.
به عنوان مثال برای جمع بندی دادهها برای یک گروه خاص در سلول F1، از فرمولهای زیر استفاده میکنیم:
- جمع بردها:
- میانگین بردها:
- بیشترین بردها:
- کمترین بردها:
توجه داشته باشید که در تمام فرمولها از عدد صفر به جای آرگومان If-empty استفاده کردهایم تا اگر هیچ دادهای با شرط مطابق نبود، مقدار صفر در خروجی نشان داده شود. در این شرایط، استفاده از عبارتهایی همچون «No Results» شما را به خطای Value میرساند.
فرمول تابع Filter در اکسل با حساسیت به بزرگی و کوچکی حروف
فرمول استاندارد تابع Filter در اکسل، نسبت به حروف حساس نیست. یعنی بین حروف انگلیسی بزرگ و کوچک تفاوتی نمیگذارد. برای اینکه این وضعیت را تغییر دهیم، تابع Filter را با تابع Exact ترکیب میکنیم و آن را به شکل زیر مینویسیم:
فرض کنید در لیست خود دو گروه با نامهای «A» و «a» داریم و میخواهیم دادههای گروه «a» را به دست آوریم. برای انجام این کار، از فرمول زیر استفاده میکنیم:
نحوه استفاده از تابع Filter در اکسل برای استخراج ستونهای خاص
در بیشتر مواقع، فیلتر کردن تمام ستونها با یک فرمول، چیزی است که کاربران اکسل به دنبال آن هستند. با این حال اگر مجموعه داده شما شامل صدها و هزاران ستون مختلف باشد، بهتر است جستوجوی خود را فقط به ستونهای مهم محدود کنید. در ادامه میبینیم که چگونه میتوانید این کار را به کمک تابع Filter در اکسل انجام دهید.
مثال۱، فیلتر کردن برخی از ستونهای مجاور
در شرایطی که میخواهید فقط برخی از ستونهای همجوار در نتیجه فیلتر نشان داده شوند، باید تنها همان ستونها را به عنوان آرگومان Array قرار دهید، چون این آرگومان تعیین میکند که چه ستونهایی استخراج شوند.
فرض کنید جدول بازیکنها و تعداد برد آنها را داریم اما میخواهیم فقط دو ستون اول را استخراج کنیم (نام و گروه). به همین دلیل محدوده A2:B9 را به جای آرگومان Array مینویسی و فرمول به شکل زیر تبدیل میشود:
مثال۲، فیلتر کردن ستونهای غیرهمجوار
برای فیلتر کردن ستونهایی که در کنار یکدیگر نیستند از روشی هوشمندانه به شرح زیر استفاده میکنیم:
ابتدا فرمول تابع Filter را با شروط مورد نظر و با استفاده از کل جدول به جای آرگومان Array، مینویسیم. سپس این فرمول را با یک تابع Filter دیگر ترکیب میکنیم. بعد برای پیکربندی تابع، از یک آرایه ثابت شامل مقادیر True و False یا ۰ و ۱ به جای آرگومان Include کمک میگیریم که در آن True یا ۱، ستونهایی که باید نگه داشته شوند و False یا ۰، ستونهایی که باید حذف شوند را علامت گذاری میکند.
مثلا در مثال زیر، برای اینکه نتایج خود را از ستون اول (نام) و ستون سوم (بردها) به دست آوریم، آرایه {۱,۰,۱} یا {True,False,True} را به عنوان آرگومان Include در تابع Filter دوم به کار میبریم.
یا
همانطور که میبینید، شرط در ستون دوم (گروه) بررسی شده است اما این ستون در خروجی نشان داده نمیشود.
چگونه تعداد ردیفهای نشان داده شده در نتیجه تابع Filter را محدود کنیم؟
اگر فرمول Filter، داده بسیار زیادی را استخراج کرد اما صفحه کاری شما جای خالی برای آنها نداشت و نمیخواستید دادههای سلولهای دیگر را حذف کنید، این امکان برایتان وجود دارد که برای تعداد ردیفهای نتیجه این تابع، محدودیتی بگذارید.
در ادامه به کمک مثالی ساده برای استخراج بازیکنان بر اساس شرط موجود در سلول F1، به توضیح بیشتر این روش پرداختهایم.
این فرمول هر دادهای که پیدا کند را در خروجی نشان میدهد، در مثال ما، نتیجه دارای چهار ردیف است.
با این حال فرض بگیرید، در صفحه کاری، تنها برای ۲ ردیف جا وجود دارد. برای محدود کردن تعداد ردیفهای نمایشی، تابع Filter را با تابع Index ترکیب میکنیم. سپس به جای آرگومان Row-Num تابع Index، یک آرایه عمودی ثابت مانند {۲;۱} را به کار میبریم که تعیین میکند چند ردیف در خروجی نشان داده شوند.
به جای آرگومان Column-Num نیز یک آرایه ثابت افقی مانند {۱,۲,۳} را جایگزین خواهیم کرد. این آرایه تعداد ستونهای نتیجه را مشخص میکند (در این مثال، سه ستون اول). برای جلوگیری از بروز خطا، در صورت پیدا نشدن داده منطبق نیز این دو تابع را درون یک تابع Iferror قرار میدهیم.
نهایتا فرمول به شکل زیر تبدیل خواهد شد:
با این حال هنگام کار با حجم زیادی از داده ممکن است نوشتن آرایههای ثابت، سخت و دشوار باشد. اما مشکلی نیست، بلکه تابع Sequence میتواند به طور خودکار برای شما اعداد ترتیبی را ایجاد کند.
تابع Sequence اول، یک آرایه عمودی حاوی تعداد زیادی اعداد متوالی تولید میکند که در آرگومان اول مشخص شده است،میسازد. تابع Sequence دوم، با استفاده از تابع Columns، تعداد ستونهای مجموعه داده را شمارش کرده و سپس یک آرایه افقی معادل برای آن تولید میکند.
چرا تابع Filter در اکسل کار نمیکند؟
در بیشتر مواقع، اگر تابع Filter به درستی کار نکند، با یکی از خطاهای زیر مواجه خواهید شد:
+ همچنین در ریسمونک بخوانید:
چگونه در اکسل میانگین را حساب کنیم ؟
خطای CALC در اکسل چیست؟
اگر آرگومان If-empty را در تابع Filter خالی بگذارید، با این خطا مواجه خواهید شد و هیچ دادهای منطبق با شرط پیدا نخواهد شد. از آنجایی که اکسل هنوز نمیتواند آرایه خالی را بپذیرد، چنین خطایی بروز پیدا میکند. به همین دلیل برای پرهیز از برخورد با آن بهتر است همیشه مطمئن شوید که آرگومان If-empty را پر کردهاید.
خطای VALUE در اکسل یعنی چه؟
این خطا زمانی بروز میکند که مقادیر آرگومانهای Include و Array با هم سازگاری نداشته باشند.
خطای N/A یا VALUE
اگر برخی از مقادیر موجود در آرگومان Include، خطایی داشته یا قابلیت تبدیل شدن به بولین را نداشته باشند، با این اررور مواجه خواهید شد.
خطای NAME در اکسل چه زمانی اتفاق میافتد؟
این خطا زمانی بروز میکند که بخواهید در نسخههای قدیمی اکسل از تابع Filter استفاده کنید. خواهشا فراموش نکنید که این تابع جدید از نسخه اکسل ۲۰۲۱ به این برنامه اضافه شده است. البته در نسخههای جدید نیز اگر نام تابع را اشتباه بنویسید با این خطا مواجه خواهید شد.
خطای SPILL
در بیشتر مواقع، این خطا زمانی رخ میدهد که یک سلول یا بیشتر در محدوده Spill، کاملا خالی نباشند. برای رفع آن کافی است دادههای درون سلولها را پاک کنید.
خطای REF
زمانی اتفاق میافتد که فرمول Filter را بین صفحات کاری مختلف به کار ببرید و صفحه کاری منبع بسته باشد.
سخن پایانی
در این مقاله به بررسی تابع Filter در اکسل پرداختیم. فیتلر کردن و استخراج دادههای خاص، یکی از کارهای بسیار رایج در اکسل است. با اینکه یک گزینه خودکار برای انجام این کار در اکسل وجود دارد اما نتایج این نوع فیلتر پویا نیستند. این در حالی است که نتایج تابع Filter، با هر بار تغییر دادهها، بروزرسانی خواهند شد.
تلاش کردیم با ذکر مثالهای مختلف و بررسی شرایط و موقعیتهای متفاوت، نحوه استفاده از این تابع را به طور کامل شرح دهیم. به همین دلیل میتوانید در هر زمان و با هر هدفی از این مقاله برای رفع مشکلات خود در زمینه فیتلر کردن دادهها کمک بگیرید.