فهرست مطالب
امروز ما نگاهی دقیق به نحو و کاربردهای معمولی تابع SORTBY جدید آرایه پویا خواهیم داشت. شما یاد خواهید گرفت که چگونه در اکسل با یک فرمول مرتب سازی سفارشی کنید، لیست را به طور تصادفی مرتب کنید، سلول ها را بر اساس طول متن مرتب کنید، و موارد دیگر.
Microsoft Excel راه های مختلفی برای مرتب کردن داده های متنی بر اساس حروف الفبا، تاریخ ها ارائه می دهد. به ترتیب زمانی، و اعداد از کوچکترین به بزرگترین یا از بالاترین به پایین ترین. همچنین راهی برای مرتب سازی بر اساس لیست های سفارشی شما وجود دارد. علاوه بر قابلیت مرتب سازی معمولی، اکسل 365 یک روش کاملاً جدید برای مرتب سازی داده ها با فرمول ها معرفی می کند - استفاده بسیار راحت و فوق العاده ساده!
عملکرد Excel SORTBY
تابع SORTBY در اکسل برای مرتب کردن یک محدوده یا آرایه بر اساس مقادیر موجود در محدوده یا آرایه دیگر طراحی شده است. مرتب سازی را می توان توسط یک یا چند ستون انجام داد.
SORTBY یکی از شش تابع آرایه پویا جدید موجود در Excel برای Microsoft 365 و Excel 2021 است. دادههای منبع تغییر میکند.
عملکرد SORTBY دارای تعدادی آرگومان متغیر است - دو مورد اول مورد نیاز و دیگری اختیاری هستند:
SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2] ,…)آرایه (الزامی) - محدوده سلولها یا آرایه مقادیری که باید مرتب شوند.
By_array1 (الزامی) - محدوده یا آرایه چیدنتوسط.
Sort_order1 (اختیاری) - ترتیب مرتب سازی:
- 1 یا حذف شده (پیش فرض) - صعودی
- -1 - نزولی
By_array2 / Sort_order2 ، … (اختیاری) - آرایه های اضافی / جفت های سفارش برای مرتب سازی استفاده می شود.
نکته مهم! در حال حاضر تابع SORTBY فقط با اشتراک مایکروسافت 365 و اکسل 2021 در دسترس است. در اکسل 2019، اکسل 2016 و نسخه های قبلی، تابع SORTBY در دسترس نیست.
عملکرد SORTBY - 4 چیز برای یادآوری
برای اینکه یک فرمول SORTBY اکسل به درستی کار کند، چند نکته مهم وجود دارد که باید به آنها توجه کرد:
- By_array آرگومانهای باید یک ردیف ارتفاع یا یک ستون عرض داشته باشند.<11
- آرگومان آرایه و همه آرگومانهای by_array باید دارای ابعاد سازگار باشند. برای مثال، هنگام مرتبسازی بر اساس دو ستون، آرایه ، by_array1 و by_array2 باید تعداد ردیفهای یکسانی داشته باشند. در غیر این صورت یک خطای #VALUE رخ خواهد داد.
- اگر آرایه ای که توسط SORTBY برگردانده می شود، نتیجه نهایی باشد (خروجی در یک سلول است و به تابع دیگری منتقل نمی شود)، اکسل یک محدوده نشت پویا ایجاد می کند و آن را با نتایج پر می کند. بنابراین، مطمئن شوید که سلولهای خالی کافی در پایین و/یا سمت راست سلولی که فرمول را وارد میکنید دارید، در غیر این صورت با خطای #SPILL مواجه میشوید.
- نتایج فرمولهای SORTBY هر زمان که تغییر داده های منبع با این حال، ورودی های جدید که در خارج از اضافه شده استآرایه ارجاع شده در فرمول در نتایج گنجانده نمی شود مگر اینکه مرجع آرایه را به روز کنید. برای اینکه آرایه ارجاع شده به طور خودکار گسترش یابد، محدوده منبع را به یک جدول اکسل تبدیل کنید یا یک محدوده با نام پویا ایجاد کنید.
فرمول پایه SORTBY در اکسل
در اینجا یک سناریوی معمولی برای استفاده از یک فرمول SORTBY در اکسل:
فرض کنید، لیستی از پروژه ها با فیلد Value دارید. شما می خواهید پروژه ها را بر اساس ارزش آنها در یک برگه جداگانه مرتب کنید. از آنجایی که سایر کاربران نیازی به دیدن اعداد ندارند، ترجیح می دهید ستون Value را در نتایج وارد نکنید.
این کار را می توان به راحتی با تابع SORTBY انجام داد، که برای آن می توانید انجام دهید. آرگومان های زیر را ارائه دهید:
- Array A2:A10 است - از آنجایی که نمی خواهید ستون Value در نتایج نمایش داده شود، آن را ترک می کنید. خارج از آرایه.
- By_array1 B2:B10 است - مرتب سازی بر اساس Value .
- Sort_order1 is -1 - نزولی، یعنی از بالاترین به پایین ترین.
با کنار هم قرار دادن آرگومان ها، به این فرمول می رسیم:
=SORTBY(A2:B10, B2:B10, -1)
برای سادگی، از فرمول روی همان استفاده می کنیم. برگه - آن را در D2 وارد کرده و کلید Enter را فشار دهید. نتایج بهطور خودکار به هر تعداد سلولی که لازم است ریخته میشود (در مورد ما D2:D10). اما از نظر فنی، فرمول فقط در سلول اول است و با حذف آن از D2 تمام نتایج حذف می شود.
هنگامی که در برگه دیگری استفاده می شود، فرمول مقدار را می گیردشکل زیر:
=SORTBY(Sheet1!A2:A10, Sheet1!B2:B10, -1)
که در آن Sheet1 کاربرگ حاوی داده های اصلی است.
استفاده از تابع SORTBY در اکسل - مثال های فرمول
در زیر چند نمونه دیگر از استفاده از SORTBY را خواهید دید که امیدواریم مفید و روشنگر باشد.
مرتب سازی بر اساس ستون های متعدد
فرمول اساسی که در بالا توضیح داده شد، داده ها را بر اساس یک ستون مرتب می کند. اما اگر بخواهید یک سطح دیگر از مرتبسازی اضافه کنید، چه میشود؟
با فرض اینکه جدول نمونه ما دو فیلد دارد، وضعیت (ستون B) و مقدار (ستون C) ، می خواهیم ابتدا بر اساس وضعیت بر اساس حروف الفبا، و سپس مقدار نزولی مرتب کنیم.
برای مرتب سازی بر اساس دو ستون، فقط یک جفت دیگر از <1 را اضافه می کنیم. آرگومان های>by_array / sort_order :
- Array A2:C10 است - این بار، می خواهیم هر سه ستون را در نتایج قرار دهیم.
- By_array1 B2:B10 است - ابتدا، مرتب سازی بر اساس وضعیت .
- Sort_order1 1 است - مرتب سازی بر اساس حروف الفبا از A به Z.
- By_array2 C2:C10 است - سپس، مرتب سازی بر اساس Value .
- Sort_order2 -1 است - از بزرگترین به کوچکترین مرتبسازی کنید.
در نتیجه، فرمول زیر را دریافت میکنیم:
=SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)
که دادههای ما را دقیقاً همانطور که دستور دادهایم دوباره مرتب میکند:
مرتبسازی سفارشی در اکسل با فرمول
برای مرتبسازی دادهها به ترتیب سفارشی، میتوانید از ویژگی مرتبسازی سفارشی اکسل استفاده کنید یا فرمول SORTBY MATCH را به این شکل بسازید:
SORTBY(آرایه،MATCH( range_to_sort , custom_list , 0))با نگاهی دقیق تر به مجموعه داده های ما، احتمالاً راحت تر می توانید پروژه ها را بر اساس وضعیت آنها "منطقی" مرتب کنید. ، به عنوان مثال. بر اساس اهمیت، به جای حروف الفبا.
برای انجام این کار، ابتدا یک لیست سفارشی به ترتیب مرتب سازی دلخواه ایجاد می کنیم ( در حال انجام ، تکمیل شده ، در حالت انتظار ) هر مقدار را در یک سلول جداگانه در محدوده E2:E4 تایپ کنید.
و سپس، با استفاده از فرمول عمومی بالا، محدوده منبع را برای آرایه (A2) ارائه می کنیم. :C10)، ستون وضعیت برای range_to_sort (B2:B10)، و لیست سفارشی که برای custom_list ایجاد کردیم (E2:E4).
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))
در نتیجه، پروژهها را دقیقاً بر اساس وضعیتشان مرتب میکنیم:
برای مرتبسازی بر اساس فهرست سفارشی به ترتیب معکوس، -1 را برای آرگومان sort_order1 :
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)
و پروژهها را در جهت مخالف مرتب خواهید کرد:
میخواهید رکوردها را در هر وضعیت مرتب کنید؟ مشکلی نیست. به سادگی، یک سطح مرتبسازی دیگر را به فرمول اضافه کنید، بگویید با Value (C2:C10)، و ترتیب مورد نظر مرتبسازی را در مورد ما صعودی تعریف کنید:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)
یک مزیت بزرگ فرمول SORTBY نسبت به ویژگی مرتب سازی سفارشی اکسل این است که هر زمان که داده های اصلی تغییر کند، فرمول به طور خودکار به روز می شود، در حالی که این ویژگی نیاز به تمیز کردن و مرتب سازی مجدد با هر تغییر دارد.
چگونه این فرمولآثار:
همانطور که قبلاً ذکر شد، تابع SORTBY اکسل فقط میتواند آرایههای «مرتبسازی بر اساس» را پردازش کند که ابعاد آنها با آرایه منبع سازگار است. از آنجایی که آرایه منبع ما (C2:C10) شامل 9 ردیف و لیست سفارشی (E2:E4) فقط 3 ردیف است، نمیتوانیم آن را مستقیماً به آرگومان by_array عرضه کنیم. در عوض، ما از تابع MATCH برای ایجاد یک آرایه 9 ردیفی استفاده می کنیم:
MATCH(B2:B10, E2:E5, 0)
در اینجا، از ستون Status (B2:B10) به عنوان مقادیر جستجو استفاده می کنیم و لیست سفارشی ما (E2:E5) به عنوان آرایه جستجو. آخرین آرگومان برای جستجوی تطابقات دقیق روی 0 تنظیم شده است. در نتیجه، آرایهای از 9 عدد دریافت میکنیم که هر کدام موقعیت نسبی یک مقدار داده شده Status را در لیست سفارشی نشان میدهند:
{1;3;2;1;3;2;2;1;2}
این آرایه مستقیماً میرود. به آرگومان by_array تابع SORTBY و آن را وادار میکند که دادهها را به ترتیب مربوط به عناصر آرایه قرار دهد، یعنی ابتدا ورودیهایی که با 1 نشان داده میشوند، سپس ورودیهایی که با 2 نمایش داده میشوند و غیره.
مرتبسازی تصادفی در اکسل با فرمول
در نسخههای قبلی اکسل، میتوانید با تابع RAND یک مرتبسازی تصادفی انجام دهید همانطور که در این آموزش توضیح داده شده است: نحوه مرتبسازی تصادفی فهرست در اکسل.
در اکسل جدید، میتوانید از یک تابع قدرتمندتر RANDARRAY همراه با SORTBY استفاده کنید:
SORTBY( آرایه , RANDARRAY(ROWS( آرایه )))جایی که آرایه دادههای منبعی است که میخواهید به هم بزنید.
این فرمول عمومی برای فهرستی کار میکند که از یکتک ستونی و همچنین برای یک محدوده چند ستونی.
به عنوان مثال، برای مرتب سازی تصادفی یک لیست در A2:A10، از این فرمول استفاده کنید:
=SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))
برای به هم زدن داده ها در A2:C10 ردیف ها را کنار هم نگه می دارد، از این استفاده کنید:
=SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))
این فرمول چگونه کار می کند:
تابع RANDARRAY یک آرایه تولید می کند از اعداد تصادفی که برای مرتبسازی استفاده میشوند، و آن را در آرگومان by_array SORTBY ارسال میکنید. برای تعیین تعداد اعداد تصادفی که باید تولید شوند، با استفاده از تابع ROWS، تعداد ردیفهای موجود در محدوده منبع را میشمارید و آن عدد را به آرگومان ردیفها RANDARRAY وارد میکنید. همین!
توجه داشته باشید. مانند سلف خود، RANDARRAY یک تابع فرار است و هر بار که کاربرگ دوباره محاسبه می شود، آرایه جدیدی از اعداد تصادفی تولید می کند. در نتیجه، داده های شما با هر تغییر در برگه استفاده می شود. برای جلوگیری از متوسل شدن خودکار، میتوانید از ویژگی Paste Special > Values برای جایگزینی فرمولها با مقادیرشان استفاده کنید.
مرتبسازی سلولها بر اساس طول رشته
برای مرتب کردن سلول ها بر اساس طول رشته های متنی که دارند، از تابع LEN برای شمارش تعداد کاراکترهای هر سلول استفاده کنید و طول های محاسبه شده را به آرگومان by_array SORTBY ارائه دهید. آرگومان sort_order بسته به ترتیب ترجیحی مرتبسازی میتواند روی 1 یا -1 تنظیم شود.
برای مرتبسازی بر اساس رشته متن از کوچکترین به بزرگترین:
SORTBY(آرایه، LEN(آرایه)، 1)برای مرتب سازی بر اساسرشته متن از بزرگترین به کوچکترین:
SORTBY(آرایه، LEN(آرایه)، -1)و در اینجا فرمولی وجود دارد که این رویکرد را در داده های واقعی نشان می دهد:
=SORTBY(A2:A7, LEN(A2:A7), 1)
جایی که A2:A7 سلولهای اصلی هستند که میخواهید بر اساس طول متن به ترتیب صعودی مرتب شوند:
SORTBY در مقابل SORT
در گروه توابع جدید آرایه پویا اکسل، دو عدد وجود دارد. برای مرتب سازی طراحی شده است. در زیر ما اساسی ترین تفاوت ها و شباهت ها و همچنین زمان استفاده از هر کدام را فهرست می کنیم.
- برخلاف تابع SORT، SORTBY نیازی به آرایه "مرتب سازی بر اساس" ندارد تا بخشی از منبع باشد. آرایه، و همچنین نیازی نیست که در نتایج ظاهر شود. بنابراین، هنگامی که وظیفه شما مرتب کردن یک محدوده بر اساس یک آرایه مستقل دیگر یا یک لیست سفارشی است، SORTBY عملکرد مناسبی برای استفاده است. اگر به دنبال مرتبسازی یک محدوده بر اساس مقادیر خودش هستید، SORT مناسبتر است.
- هر دو تابع از سطوح مختلف مرتبسازی پشتیبانی میکنند و هر دو را میتوان با دیگر آرایههای پویا و توابع معمولی زنجیرهای کرد.
- هر دو تابع فقط برای کاربران اکسل 365 و اکسل 2021 در دسترس هستند.
عملکرد Excel SORTBY کار نمی کند
در صورتی که فرمول SORTBY شما خطایی را برگرداند، به احتمال زیاد به دلیل یکی از دلایل زیر.
آگومان های by_array نامعتبر
آگومان های by_array باید یک ردیف یا یک ستون باشد و از نظر اندازه با آرایه<سازگار باشد. 2> استدلال. برای مثال، اگر آرایه دارای 10 باشدردیفها، by_array نیز باید شامل 10 ردیف باشد. در غیر این صورت یک #VALUE! خطایی رخ میدهد.
آگومانهای مرتبسازی_معتبر
آگومانهای مرتب_ترتیب فقط میتوانند 1 (صعودی) یا -1 (نزولی) باشند. اگر مقداری تنظیم نشده باشد، SORTBY به ترتیب صعودی پیشفرض میشود. اگر مقدار دیگری تنظیم شده باشد، یک #VALUE! خطا برگردانده شده است.
فضای کافی برای نتایج وجود ندارد
مثل هر تابع آرایه پویا دیگری، SORTBY نتایج را در یک محدوده قابل تغییر اندازه و به روز رسانی به طور خودکار ریخته است. اگر سلول های خالی کافی برای نمایش تمام مقادیر وجود نداشته باشد، یک #SPILL! خطا داده می شود.
کتاب کار منبع بسته است
اگر فرمول SORTBY به فایل اکسل دیگری ارجاع می دهد، هر دو کتاب کار باید باز باشند. اگر کتاب کار منبع بسته است، یک #REF! خطا رخ می دهد.
نسخه اکسل شما از آرایه های پویا پشتیبانی نمی کند
هنگامی که در نسخه پیش پویا اکسل استفاده می شود، تابع SORT یک #NAME برمی گرداند؟ خطا.
این نحوه استفاده از تابع SORTBY در اکسل برای انجام مرتبسازی سفارشی و موارد دیگر است. من از خواندن شما سپاسگزارم و امیدوارم هفته آینده شما را در وبلاگ خود ببینم!
کتاب کار را برای دانلود تمرین کنید
فرمول های Excel SORTBY (فایل xlsx)