تابع SORT در اکسل
تابع SORT یکی از توابع قدرتمند اکسل برای مرتبسازی آرایهها (dynamic arrays) است. این تابع در نسخههای جدید اکسل (Excel 365، Excel 2021 و Excel for Web) در دسترس بوده و امکان مرتبسازی پویا را بدون نیاز به فرمولهای پیچیده یا مرتبسازی دستی فراهم میکند.
ساختار و پارامترهای تابع
فرمت تابع:
=SORT(array, [sort_index], [sort_order], [by_col])توضیح پارامترها:
- array: محدوده یا آرایهای که باید مرتب شود (الزامی).
- sort_index: شماره ستون یا سطر بر اساس آن که مرتبسازی انجام میشود (اختیاری، پیشفرض 1).
- sort_order: جهت مرتبسازی — 1 برای صعودی و -1 برای نزولی (اختیاری، پیشفرض 1).
- by_col: اگر TRUE باشد، مرتبسازی بر اساس ستونها انجام میشود؛ اگر FALSE یا خالی باشد، مرتبسازی بر اساس سطرها انجام میشود (پیشفرض FALSE).
مثال ساده — مرتبسازی یک ستون
| A |
|---|
| پرتغال |
| سیب |
| موز |
| انگور |
=SORT(A2:A5,1,1)این فرمول مقادیر ستون A را به ترتیب حروف الفبا (صعودی) مرتب میکند. اگر بخواهید نزولی کنید، از =SORT(A2:A5,1,-1) استفاده کنید.
مرتبسازی چندستونه (چند سطحی)
تابع SORT میتواند یک آرایه دو بعدی (چند ستون) را مرتب کند، اما تنها با مشخص کردن یک sort_index در هر فراخوانی. برای مرتبسازی چند سطحی (مثلاً ابتدا بر اساس ستون B و سپس بر اساس ستون C) دو گزینه دارید:
- استفاده از تابع SORTBY که امکان چند معیار را به صورت مستقیم میدهد.
- استفاده از ترکیبهایی مثل SORT روی آرایهای که قبلاً با SORT دیگری مرتب شده است.
=SORT(SORT(A2:C20,2,1),3,-1)در این مثال ابتدا A2:C20 را بر اساس ستون دوم (2) صعودی مرتب میکنیم، سپس خروجی را بر اساس ستون سوم نزولی مرتب میکنیم. توجه کنید که این روش در برخی موارد پیچیدهتر از SORTBY است.
مثال پیشنهادی با دادههای فروش
| نام | فروش | تاریخ |
|---|---|---|
| علی | 120 | 2025-01-10 |
| سارا | 95 | 2025-02-03 |
| مهدی | 200 | 2025-01-22 |
| لیلا | 160 | 2025-01-28 |
=SORT(A2:C5,2,-1)این فرمول کل جدول را بر اساس ستون «فروش» (ستون دوم) نزولی مرتب میکند؛ ردیف با بیشترین فروش در بالا قرار میگیرد. خروجی یک آرایه سرریز (spill) است که به طور خودکار سلولهای مجاور را پر میکند.
ترکیب SORT با FILTER و UNIQUE
یک کاربرد رایج، مرتبسازی نتایج فیلتر شده یا منحصر به فرد است. به عنوان مثال: نمایش فروشهای بالاتر از 100 و سپس مرتبسازی براساس تاریخ نزولی:
=SORT(FILTER(A2:C100, C2:C100>100), 3, -1)در این فرمول ابتدا FILTER ردیفهایی را که شرط C>100 را دارند جدا میکند، سپس SORT آن خروجی را بر اساس ستون سوم (تاریخ) به صورت نزولی مرتب میکند.
وقتی SORT کافی نیست — معرفی SORTBY و نکات پیشرفته
اگر نیاز به چند معیار مرتبسازی دارید، SORTBY راحتتر است:
=SORTBY(A2:C20, B2:B20, -1, C2:C20, 1)این فرمول اول بر اساس B نزولی مرتب میکند و در صورت تساوی، بر اساس C صعودی. SORTBY به شما اجازه میدهد معیارهای متعددی را پشت سر هم مشخص کنید.
نکات کاربردی و نکات فنی
- SORT یک تابع غیروالتیل است؛ یعنی هر بار صفحه محاسبه شود، نتیجه مجدداً محاسبه میشود ولی باعث کندی غیرضروری نمیشود مگر آرایه بسیار بزرگ باشد.
- برای مرتبسازی پایدار (stable sort) که ترتیب اولیه را در مواقع تساوی حفظ کند، بهتر است یک ستون کمکی با شماره ردیف اضافه کنید و آنرا به عنوان رتبه ثانویه استفاده کنید.
- مرتبسازی متن بهطور پیشفرض حساس به حروف بزرگ/کوچک نیست؛ اگر نیاز به حساسیت به حروف دارید باید از راهکارهای پیچیدهتر (مانند تابع EXACT یا اضافه کردن کلید ترکیبی) استفاده کنید.
- برای تاریخها و اعداد، از نوع داده مناسب در سلولها استفاده کنید تا SORT به درستی عمل کند.
- از نامگذاری محدودهها (Named Ranges) یا جدولهای ساختیافته (Excel Tables) استفاده کنید تا فرمولها خواناتر و انعطافپذیرتر شوند.
مثال کاربردی: مرتبسازی ستونی
اگر بخواهید سطرها را به صورت افقی بر اساس یک ردیف مرتب کنید (مثلاً لیستی از ماهها به عنوان ردیف)، از پارامتر by_col استفاده کنید:
=SORT(B1:M1, 1, 1, TRUE)این فرمول سطر B1:M1 را به ترتیب صعودی مرتب میکند زیرا از by_col = TRUE استفاده شده است.
اشکالزدایی و خطاهای معمول
- اگر ارجاع شما به محدودهای باشد که فراتر از سلولهای خالی یا مقادیر نامعتبر است، خروجی ممکن است اشتباه یا #VALUE! ایجاد کند.
- در نسخههای قدیمی اکسل که از آرایههای پویا پشتیبانی نمیکنند، تابع SORT در دسترس نیست و باید از روشهای قدیمیتر (مانند SORT در تب Data یا VBA) استفاده کرد.
جمعبندی و توصیهها
تابع SORT یک ابزار سریع و خوانا برای مرتبسازی دادهها در اکسل مدرن است. با ترکیب آن با FILTER، UNIQUE و SORTBY میتوانید گزارشهای دینامیک، داشبوردها و خروجیهای مرتب و قابلاطمینان بسازید. برای دیتاستهای بزرگ، از جدولهای ساختیافته و ستونهای کمکی استفاده کنید تا نتایج قابل پیگیری و پایدار بمانند.
در صورت نیاز میتوان مثالهای واقعیتری متناسب با جدول شما نوشت یا فرمولهایی برای مرتبسازی چند سطحی و پایدار آماده کرد.
آیا این مطلب برای شما مفید بود ؟




