Mục lục
Hôm nay chúng ta sẽ xem xét kỹ cú pháp và cách sử dụng điển hình của hàm SORTBY mảng động mới. Bạn sẽ tìm hiểu cách sắp xếp tùy chỉnh trong Excel bằng công thức, sắp xếp ngẫu nhiên danh sách, sắp xếp các ô theo độ dài văn bản, v.v.
Microsoft Excel cung cấp một số cách sắp xếp dữ liệu văn bản theo thứ tự bảng chữ cái, ngày tháng theo thứ tự thời gian và các số từ nhỏ nhất đến lớn nhất hoặc từ cao nhất đến thấp nhất. Ngoài ra còn có một cách để sắp xếp theo danh sách tùy chỉnh của riêng bạn. Ngoài chức năng Sắp xếp thông thường, Excel 365 giới thiệu một cách hoàn toàn mới để sắp xếp dữ liệu bằng công thức - rất thuận tiện và cực kỳ đơn giản để sử dụng!
Hàm SORTBY của Excel
Hàm SORTBY trong Excel được thiết kế để sắp xếp một dải ô hoặc mảng dựa trên các giá trị trong dải ô hoặc mảng khác. Việc sắp xếp có thể được thực hiện theo một hoặc nhiều cột.
SORTBY là một trong sáu hàm mảng động mới có sẵn trong Excel cho Microsoft 365 và Excel 2021. Kết quả của nó là một mảng động tràn sang các ô lân cận và tự động cập nhật khi dữ liệu nguồn thay đổi.
Hàm SORTBY có số lượng đối số thay đổi - hai đối số đầu tiên là bắt buộc và đối số còn lại là tùy chọn:
SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2] ,…)Mảng (bắt buộc) - phạm vi ô hoặc mảng giá trị cần sắp xếp.
By_array1 (bắt buộc) - phạm vi hoặc mảng xắp xếptheo.
Sắp_xếp1 (tùy chọn) - thứ tự sắp xếp:
- 1 hoặc bỏ qua (mặc định) - tăng dần
- -1 - giảm dần
By_array2 / Sort_order2 , … (tùy chọn) - các cặp mảng/thứ tự bổ sung để sử dụng để sắp xếp.
Lưu ý quan trọng! Hiện tại, hàm SORTBY chỉ khả dụng với đăng ký Microsoft 365 và Excel 2021. Trong Excel 2019, Excel 2016 và các phiên bản cũ hơn, hàm SORTBY không khả dụng.
Hàm SORTBY - 4 điều cần nhớ
Để công thức SORTBY của Excel hoạt động chính xác, có một vài điểm quan trọng cần lưu ý:
- Các đối số By_array phải cao một hàng hoặc rộng một cột.
- Các đối số array và tất cả by_array phải có kích thước tương thích. Ví dụ: khi sắp xếp theo hai cột, array , by_array1 và by_array2 phải có cùng số hàng; nếu không sẽ xảy ra lỗi #VALUE.
- Nếu mảng do SORTBY trả về là kết quả cuối cùng (xuất ra trong một ô và không được chuyển sang hàm khác), Excel sẽ tạo một phạm vi tràn động và điền kết quả vào đó. Vì vậy, hãy chắc chắn rằng bạn có đủ ô trống phía dưới và/hoặc bên phải của ô mà bạn nhập công thức, nếu không, bạn sẽ gặp lỗi #SPILL.
- Kết quả của công thức SORTBY tự động cập nhật bất cứ khi nào dữ liệu nguồn thay đổi. Tuy nhiên, các mục mới được thêm vào bên ngoàimảng được tham chiếu trong công thức không được đưa vào kết quả trừ khi bạn cập nhật tham chiếu mảng . Để mảng được tham chiếu tự động mở rộng, hãy chuyển đổi phạm vi nguồn thành bảng Excel hoặc tạo một phạm vi có tên động.
Công thức SORTBY cơ bản trong Excel
Đây là một tình huống điển hình khi sử dụng một Công thức SORTBY trong Excel:
Giả sử bạn có một danh sách các dự án có trường Giá trị . Bạn muốn sắp xếp các dự án theo giá trị của chúng trên một trang tính riêng. Vì những người dùng khác không cần xem các con số, nên bạn không nên đưa cột Giá trị vào kết quả.
Có thể dễ dàng hoàn thành tác vụ bằng hàm SORTBY mà bạn cung cấp các đối số sau:
- Mảng là A2:A10 - vì bạn không muốn cột Giá trị hiển thị trong kết quả nên bạn để nguyên ra khỏi mảng.
- By_array1 là B2:B10 - sắp xếp theo Giá trị .
- Sắp_xếp1 là -1 - giảm dần, tức là từ cao nhất đến thấp nhất.
Đặt các đối số lại với nhau, chúng ta có công thức sau:
=SORTBY(A2:B10, B2:B10, -1)
Để đơn giản, chúng ta sử dụng công thức trên sheet - nhập nó vào D2 và nhấn phím Enter. Kết quả tự động "tràn" đến nhiều ô nếu cần (D2:D10 trong trường hợp của chúng tôi). Nhưng về mặt kỹ thuật, công thức chỉ có trong ô đầu tiên và việc xóa nó khỏi D2 sẽ xóa tất cả các kết quả.
Khi được sử dụng trên một trang tính khác, công thức sẽ lấy giá trịhình sau:
=SORTBY(Sheet1!A2:A10, Sheet1!B2:B10, -1)
Trong đó Sheet1 là trang tính chứa dữ liệu gốc.
Sử dụng hàm SORTBY trong Excel - ví dụ về công thức
Dưới đây, bạn sẽ tìm thấy một vài ví dụ khác về cách sử dụng SORTBY, hy vọng sẽ hữu ích và sâu sắc.
Sắp xếp theo nhiều cột
Công thức cơ bản được thảo luận ở trên sắp xếp dữ liệu theo một cột. Nhưng nếu bạn cần thêm một mức sắp xếp nữa thì sao?
Giả sử bảng mẫu của chúng ta có hai trường, Trạng thái (cột B) và Giá trị (cột C) , trước tiên chúng tôi muốn sắp xếp theo Trạng thái theo thứ tự bảng chữ cái, sau đó theo Giá trị giảm dần.
Để sắp xếp theo hai cột, chúng tôi chỉ cần thêm một cặp <1 nữa>by_array / sort_order đối số:
- Mảng là A2:C10 - lần này, chúng tôi muốn bao gồm cả ba cột trong kết quả.
- By_array1 là B2:B10 - đầu tiên, sắp xếp theo Status .
- Sort_order1 là 1 - sắp xếp theo thứ tự bảng chữ cái từ A thành Z.
- By_array2 là C2:C10 - sau đó, sắp xếp theo Giá trị .
- Sort_order2 là -1 - sắp xếp từ lớn nhất đến nhỏ nhất.
Kết quả là chúng tôi nhận được công thức sau:
=SORTBY(A2:B10, B2:B10, 1, C2:C10, -1)
Công thức sắp xếp lại dữ liệu của chúng tôi chính xác như chúng tôi đã hướng dẫn:
Sắp xếp tùy chỉnh trong Excel bằng công thức
Để sắp xếp dữ liệu theo thứ tự tùy chỉnh, bạn có thể sử dụng tính năng Sắp xếp tùy chỉnh của Excel hoặc xây dựng công thức SORTBY MATCH theo cách sau:
SORTBY(mảng,MATCH( range_to_sort , custom_list , 0))Xem xét kỹ hơn tập dữ liệu của chúng tôi, bạn có thể sẽ thấy thuận tiện hơn khi sắp xếp các dự án theo trạng thái của chúng một cách "hợp lý" , ví dụ. theo mức độ quan trọng, thay vì theo thứ tự bảng chữ cái.
Để hoàn thành, trước tiên chúng tôi tạo một danh sách tùy chỉnh theo thứ tự sắp xếp mong muốn ( Đang tiến hành , Đã hoàn thành , On hold ) nhập từng giá trị vào một ô riêng biệt trong phạm vi E2:E4.
Và sau đó, sử dụng công thức chung ở trên, chúng tôi cung cấp phạm vi nguồn cho mảng (A2 :C10), cột Status cho range_to_sort (B2:B10) và danh sách tùy chỉnh mà chúng tôi đã tạo cho custom_list (E2:E4).
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0))
Kết quả là chúng tôi đã sắp xếp các dự án theo trạng thái của chúng một cách chính xác khi cần:
Để sắp xếp theo danh sách tùy chỉnh theo thứ tự ngược lại, hãy đặt -1 cho Đối số sắp_xếp1 :
=SORTBY(A2:C10, MATCH(B2:B10, E2:E4, 0), -1)
Và bạn sẽ có các dự án được sắp xếp theo hướng ngược lại:
Bạn muốn sắp xếp thêm các bản ghi trong mỗi trạng thái? Không vấn đề gì. Chỉ cần thêm một mức sắp xếp nữa vào công thức, chẳng hạn như Giá trị (C2:C10) và xác định thứ tự sắp xếp mong muốn, tăng dần trong trường hợp của chúng tôi:
=SORTBY(A2:C10, MATCH(B2:B10, E2:E5, 0), 1, C2:C10, 1)
Một lợi thế lớn của công thức SORTBY so với tính năng Sắp xếp Tùy chỉnh của Excel là công thức tự động cập nhật bất cứ khi nào dữ liệu gốc thay đổi, trong khi tính năng này yêu cầu dọn dẹp và sắp xếp lại với mỗi thay đổi.
Cách thực hiện công thức nàyhoạt động:
Như đã đề cập, hàm SORTBY của Excel chỉ có thể xử lý các mảng "sắp xếp theo" có kích thước tương thích với mảng nguồn. Vì mảng nguồn của chúng tôi (C2:C10) chứa 9 hàng và danh sách tùy chỉnh (E2:E4) chỉ có 3 hàng nên chúng tôi không thể cung cấp trực tiếp nó cho đối số by_array . Thay vào đó, chúng tôi sử dụng hàm MATCH để tạo mảng 9 hàng:
MATCH(B2:B10, E2:E5, 0)
Ở đây, chúng tôi sử dụng cột Trạng thái (B2:B10) làm giá trị tra cứu và danh sách tùy chỉnh của chúng tôi (E2:E5) dưới dạng mảng tra cứu. Đối số cuối cùng được đặt thành 0 để tìm kiếm kết quả khớp chính xác. Kết quả là chúng ta nhận được một mảng gồm 9 số, mỗi số đại diện cho vị trí tương đối của một giá trị Status nhất định trong danh sách tùy chỉnh:
{1;3;2;1;3;2;2;1;2}
Mảng này đi trực tiếp đến đối số by_array của hàm SORTBY và buộc nó sắp xếp dữ liệu theo thứ tự tương ứng với các phần tử của mảng, tức là các mục đầu tiên được biểu thị bằng 1, sau đó là các mục được biểu thị bằng 2, v.v.
Sắp xếp ngẫu nhiên trong Excel bằng công thức
Trong các phiên bản Excel trước, bạn có thể thực hiện sắp xếp ngẫu nhiên bằng hàm RAND như được giải thích trong hướng dẫn này: Cách sắp xếp ngẫu nhiên một danh sách trong Excel.
Trong Excel mới, bạn có thể sử dụng hàm RANDARRAY mạnh hơn cùng với SORTBY:
SORTBY( array , RANDARRAY(ROWS( array )))Trong đó mảng là dữ liệu nguồn mà bạn muốn xáo trộn.
Công thức chung này phù hợp với danh sách bao gồm mộtcột đơn cũng như cho phạm vi nhiều cột.
Ví dụ: để sắp xếp ngẫu nhiên danh sách trong A2:A10, hãy sử dụng công thức sau:
=SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10)))
Để xáo trộn dữ liệu trong A2:C10 giữ các hàng cạnh nhau, hãy sử dụng công thức này:
=SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10)))
Cách thức hoạt động của công thức này:
Hàm RANDARRAY tạo ra một mảng số ngẫu nhiên được sử dụng để sắp xếp và bạn chuyển số đó vào đối số by_array của SORTBY. Để chỉ định số lượng số ngẫu nhiên sẽ tạo, bạn đếm số hàng trong phạm vi nguồn bằng cách sử dụng hàm ROWS và "nạp" số đó vào đối số hàng của RANDARRAY. Thế là xong!
Lưu ý. Giống như tiền thân của nó, RANDARRAY là một hàm dễ bay hơi và nó tạo ra một dãy số ngẫu nhiên mới mỗi khi bảng tính được tính toán lại. Do đó, dữ liệu của bạn sẽ được sử dụng với mỗi thay đổi trên trang tính. Để ngăn tự động sử dụng, bạn có thể sử dụng tính năng Dán đặc biệt > Giá trị để thay thế công thức bằng giá trị của chúng.
Sắp xếp ô theo độ dài chuỗi
Để sắp xếp các ô theo độ dài của chuỗi văn bản mà chúng chứa, hãy sử dụng hàm LEN để đếm số lượng ký tự trong mỗi ô và cung cấp độ dài đã tính cho đối số by_array của SORTBY. Đối số thứ_tự_sắp_xếp có thể được đặt thành 1 hoặc -1, tùy thuộc vào thứ tự sắp xếp ưu tiên.
Để sắp xếp theo chuỗi văn bản từ nhỏ nhất đến lớn nhất:
SORTBY(mảng, LEN(mảng), 1)Sắp xếp theochuỗi văn bản từ lớn nhất đến nhỏ nhất:
SORTBY(array, LEN(array), -1)Và đây là công thức thể hiện cách tiếp cận này trên dữ liệu thực:
=SORTBY(A2:A7, LEN(A2:A7), 1)
Trong đó A2:A7 là các ô ban đầu bạn muốn sắp xếp theo độ dài văn bản theo thứ tự tăng dần:
SORTBY so với SORT
Trong nhóm các hàm mảng động mới của Excel, có hai được thiết kế để phân loại. Dưới đây chúng tôi liệt kê những điểm khác biệt và tương đồng cơ bản nhất cũng như thời điểm sử dụng tốt nhất từng loại.
- Không giống như hàm SORT, SORTBY không yêu cầu mảng "sắp xếp theo" phải là một phần của nguồn mảng, nó cũng không cần phải xuất hiện trong kết quả. Vì vậy, khi nhiệm vụ của bạn là sắp xếp một phạm vi dựa trên một mảng độc lập khác hoặc danh sách tùy chỉnh, SORTBY là chức năng phù hợp để sử dụng. Nếu bạn đang tìm cách sắp xếp một dải ô dựa trên các giá trị của chính nó, thì SORT sẽ phù hợp hơn.
- Cả hai hàm đều hỗ trợ nhiều cấp độ sắp xếp và cả hai có thể được liên kết với nhau bằng các hàm thông thường và mảng động khác.
- Cả hai hàm chỉ khả dụng cho người dùng Excel 365 và Excel 2021.
Hàm SORTBY của Excel không hoạt động
Trong trường hợp công thức SORTBY của bạn trả về lỗi, rất có thể là do một trong những lý do sau.
Đối số by_array không hợp lệ
Các đối số by_array phải là một hàng hoặc một cột và tương thích về kích thước với mảng lập luận. Ví dụ, nếu mảng có 10hàng, by_array cũng phải bao gồm 10 hàng. Nếu không thì #VALUE! xảy ra lỗi.
Đối số thứ tự sắp xếp không hợp lệ
Các đối số thứ tự sắp xếp chỉ có thể là 1 (tăng dần) hoặc -1 (giảm dần). Nếu không có giá trị nào được đặt, SORTBY sẽ mặc định theo thứ tự tăng dần. Nếu bất kỳ giá trị nào khác được đặt, lỗi #VALUE! lỗi được trả về.
Không có đủ dung lượng cho kết quả
Giống như bất kỳ hàm mảng động nào khác, SORTBY đưa kết quả vào một phạm vi có thể tự động thay đổi kích thước và có thể cập nhật. Nếu không có đủ ô trống để hiển thị tất cả các giá trị, lỗi #SPILL! xảy ra lỗi.
Sổ làm việc nguồn bị đóng
Nếu công thức SORTBY tham chiếu đến một tệp Excel khác, cả hai sổ làm việc cần phải được mở. Nếu sổ làm việc nguồn bị đóng, lỗi #REF! xảy ra lỗi.
Phiên bản Excel của bạn không hỗ trợ mảng động
Khi được sử dụng trong phiên bản Excel trước động, hàm SORT trả về lỗi #NAME? lỗi.
Đó là cách sử dụng hàm SORTBY trong Excel để thực hiện sắp xếp tùy chỉnh và những việc khác. Tôi cảm ơn bạn đã đọc và hy vọng sẽ gặp bạn trên blog của chúng tôi vào tuần tới!
Sách bài tập thực hành để tải xuống
Công thức SORTBY của Excel (tệp .xlsx)