تابع SORT ترکیبی با FILTER
در اکسل و گوگلشیت، ترکیب توابع FILTER و SORT یکی از قدرتمندترین روشها برای ایجاد گزارشهای پویا و قابلبهروزرسانی است. با این ترکیب میتوان دادهها را ابتدا براساس شرطهای مشخص فیلتر کرد و سپس خروجی فیلتر شده را بر اساس یک یا چند کلید مرتب نمود. در این مقاله بهصورت عملیاتی و با مثالهای واقعی، نحوه استفاده، نکات پیشرفته و بهینهسازیهای رایج را توضیح میدهم.
چرا ترکیب FILTER و SORT مهم است؟
- اجازه میدهد مجموعهای کوچکتر و مرتبطتر از دادهها را مرتب کنید.
- خروجی دینامیک تولید میکند که با تغییر دادهها یا شرایط بلافاصله بهروز میشود.
- با استفاده از توابع کمکی (مانند SORTBY، UNIQUE، IFERROR) میتوان خروجیهای پیچیده و خواناتر ساخت.
نمونه داده
| ردیف | نام | دپارتمان | حقوق | فعال |
|---|---|---|---|---|
| 1 | علی | فروش | 5000 | بله |
| 2 | نگار | مالی | 7000 | خیر |
| 3 | بهرام | فروش | 6500 | بله |
| 4 | سارا | مارکتینگ | 4800 | بله |
| 5 | جواد | فروش | 7200 | خیر |
مثال ساده: فیلتر سپس مرتبسازی صعودی بر اساس حقوق
=SORT(FILTER(A2:D6, D2:D6="بله"), 4, TRUE)توضیح: این فرمول ابتدا ردیفهایی را که ستون «فعال» برابر «بله» هستند فیلتر میکند (FILTER). سپس خروجی فیلتر شده را براساس ستون چهارم (حقوق) به صورت صعودی مرتب میکند (SORT). در این مثال فرض شده دادهها در محدوده A2:D6 قرار دارند و ستون حقوق ستون چهارم آرایه است.
استفاده از IFERROR برای جلوگیری از خطای خالی بودن نتیجه
=IFERROR(SORT(FILTER(A2:D6, D2:D6="بله"), 4, FALSE), "موردی یافت نشد")توضیح: اگر هیچ ردیفی با شرط پیدا نشود، FILTER باعث ارور میشود. با قرار دادن IFERROR حول عبارت، میتوان متن سفارشی یا مقدار خالی نمایش داد تا گزارش کاربرپسندتر شود. در این نمونه، مرتبسازی نزولی با FALSE انجام شده است.
مرتبسازی با چند کلید (مثال: ابتدا دپارتمان صعودی، سپس حقوق نزولی)
برای مرتبسازی چند کلیدی در اکسل/گوگلشییت، بهترین روش استفاده از SORTBY است. دقت کنید که در SORTBY باید آرایههایی که مرتبکننده استفاده میکنند هماندازه با خروجی FILTER باشند؛ بنابراین معمولا شرط فیلتر را برای هر ستون مرتبکننده نیز اعمال میکنیم.
=SORTBY(
FILTER(A2:D6, D2:D6="بله"),
FILTER(C2:C6, D2:D6="بله"), 1,
FILTER(D2:D6, D2:D6="بله"), -1
)توضیح: این فرمول ابتدا تمام ردیفهای فعال را فیلتر میکند. سپس با SORTBY بر اساس ستون دپارتمان (C) بهصورت صعودی (1) و سپس بر اساس حقوق (D) بهصورت نزولی (-1) مرتب میکند. استفاده از FILTER در پارامترهای SORTBY تضمین میکند که آرایههای مرتبکننده هماندازه هستند.
نمونه کاربردی: فقط ۳ نفر برتر در هر دپارتمان
برای خروجی «سه نفر برتر هر دپارتمان» میتوان از ترکیب FILTER، SORTBY و تابع کمکی ROW/SEQUENCE یا ابزارهای حجمی استفاده کرد. یک رویکرد ساده در اکسل 365/گوگلشییت:
=LET(
filtered, FILTER(A2:D6, D2:D6="بله"),
sorted, SORTBY(filtered, INDEX(filtered,,3), -1),
TAKE(sorted, 3)
)توضیح: در این مثال از LET برای خوانایی استفاده شده (برای گوگلشییت LET در دسترس است یا میتوان مستقیماً از نامگذاری استفاده کرد). filtered خروجی فیلتر شده را نگهداری میکند، سپس آن را بر اساس ستون سوم (در آرایه filtered) بهصورت نزولی مرتب میکنیم و در نهایت با TAKE سه ردیف اول را میگیریم. اگر TAKE در محیط شما موجود نیست، میتوان از INDEX یا OFFSET برای گرفتن N رکورد اول استفاده کرد.
بهینهسازیها و نکات حرفهای
- برای عملکرد بهتر در محدودههای بزرگ، سعی کنید شرطهای FILTER را تا حد امکان ساده نگه دارید و از محاسبات پیچیده درون شرط پرهیز کنید.
- اگر مرتبسازی بر اساس محاسباتی است (مثلاً شاخص عملکرد = حقوق/سابقه)، بهتر است آن محاسبه را در یک ستون کمکی انجام دهید و سپس آن ستون را فیلتر/مرتب کنید تا نیازی به محاسبه مجدد در هر بار ریکالکول نباشد.
- برای حفظ ترتیب اصلی در صورت تساوی، یک کلید ثانویه (مثلاً شناسه یا تاریخ) اضافه کنید.
- در محیطهایی که SORTBY موجود نیست، میتوان با ترکیب SORT و INDEX یا استفاده از RANK/ARRAYFORMULA راهحلهای جایگزین ساخت.
مثال بهبود یافته برای جلوگیری از ناسازگاری آرایهها
=IFERROR(
SORTBY(
FILTER(A2:D100, (D2:D100="بله")*(C2:C100="فروش")),
FILTER(D2:D100, (D2:D100="بله")*(C2:C100="فروش")), -1,
FILTER(A2:A100, (D2:D100="بله")*(C2:C100="فروش")), 1
),
"نتیجهای یافت نشد"
)توضیح: در این فرمول شرط چندگانه (هم فعال و هم دپارتمان فروش) با عملگر * ترکیب شده تا بهعنوان AND عمل کند. سپس آرایههای مرتبکننده همگی با همان شرط فیلتر شدهاند تا از خطای اندازه مختلف جلوگیری شود. IFERROR نیز برای نمایش پیام مناسب در صورت عدم وجود نتیجه اضافه شده است.
نتیجهگیری و توصیههای نهایی
ترکیب FILTER و SORT یا SORTBY انعطافپذیری بسیار بالایی برای ساخت گزارشهای پویا و قابل تنظیم فراهم میکند. نکات کلیدی عبارتاند از: هماندازه نگه داشتن آرایهها هنگام استفاده از SORTBY، مدیریت خطا با IFERROR، و استفاده از ستونهای کمکی برای محاسبات سنگین. با کمی تمرین میتوانید داشبوردها و گزارشهایی بسازید که هم دقیق و هم سریع بهروزرسانی میشوند.
اگر نمونهای از دادههای واقعی یا سناریوی خاص دارید، میتوانم فرمول متناسب را برای آن طراحی و توضیح دهم.
آیا این مطلب برای شما مفید بود ؟




