Hôm nay tôi lại chia sẻ cho các bạn các Hàm UDF được viết bằng VBA, nhằm mục đích để sắp xếp mảng một cách tối ưu nhất.
HÀM UDF SẮP XẾP PHÂN TẦNG (ĐA HÀNG CỘT)
- Hàm VSORT và Thủ tục VSORTING - Sắp xếp dọc
- Hàm HSORT và Thủ tục HSORTING - Sắp xếp ngang
Mục tiêu đạt được:
- Sắp xếp cả mảng ngang và mảng dọc.
- Sắp xếp phân tầng (nhiều hàng nhiều cột).
- Sắp xếp Tiếng Việt và Tên tiếng Việt.
- Giao diện tô màu mảng đẹp mắt.
HƯỚNG DẪN:
- Hàm viết trong bảng tính:
- =VSORT(Cells,Indexs,matchCase,color,DefaultFontColor,DefaultBackColor)
- =HSORT(Cells,Indexs,matchCase,color,DefaultFontColor,DefaultBackColor)
- Thủ tục viết trong mã để gọi từ nút ngoài bảng tính:
- Call VSORTING(Cells,Indexs,matchCase,color,DefaultFontColor,DefaultBackColor)
- Call HSORTING(Cells,Indexs,matchCase,color,DefaultFontColor,DefaultBackColor)
Vị trí | Tham số | Kiểu | Chức năng |
1 | Cells | Vùng cần tổng | Nhận vùng cần sắp xếp |
2 | Indexs | Số cột hoặc Mảng các cột | Nếu nhập số âm thì sắp xếp giảm dần, bằng 0 sx tất cả, -99999 xs từ cột cuối Nếu nhập mảng {3,1,2} thì sắp xếp phân tầng từ cột 3, đến 1, đến 2 Nếu nhập số lớn hơn 1000 hoặc nhỏ hơn -1000 thì sắp xếp tên tiếng Việt. Nếu nhập mảng {1003,1,2} thì sắp xếp tên tiếng Việt cột 3 |
3 | MatchCase | Có/Không | Sắp xếp không phân biệt hoa thường |
4 | color | Số | Màu, Nếu đặt màu nhỏ hơn 0 thì không tô màu, và sẽ sắp xếp nhanh hơn |
5 | DefaultFontColor | Số | Màu phông chữ mặc định |
6 | DefaultBackColor | Số | Màu nền mặc đinh |
Ví dụ viết hàm vào bảng tính (sắp xếp dọc):
1. Sắp xếp mảng A2:Z10000 với các phân tầng là tất cả cột, lớn dần
=VSORT(A2:Z10000, 0, FALSE)
2. Sắp xếp mảng A2:Z10000 với cột thứ 3, lớn dần gõ 3, nhỏ dần gõ -3
=VSORT(A2:Z10000, 3, FALSE)
3. Sắp xếp mảng A2:Z10000 với các phân tầng là 1, 3, 5, 7 (thứ tự cột), lớn dần
=VSORT(A2:Z10000, {1, 3, 5, 7}, FALSE)
4. Sắp xếp mảng A2:Z10000 với các phân tầng là 8, 3, 5, 4 (thứ tự cột), lớn dần
=VSORT(A2:Z10000, {8, 3, 5, 4}, FALSE)
5. Sắp xếp mảng A2:Z10000 với các phân tầng là -8, -3, -5, -4 (thứ tự cột), giảm dần
=VSORT(A2:Z10000, {-8, -3, -5, -4}, FALSE)
***Nếu dấu phân cách tham số là dấu ; thì mảng sẽ đổi dấu phẩy (,) thành dấu gạch chéo (\) là {-8\-3\-5\-4}
Ví dụ sắp xếp ngang tương tự chỉ đổi tên Hàm V thành HVí dụ gọi thủ tục trong code VBA:
Mã:
Call VSORTING([A2:Z1000], 0, FALSE)
Call HSORTING([A2:Z1000], 0, FALSE)
Call VSORTING([A2:Z1000], Array(3,1,2), FALSE)
Call HSORTING([A2:Z1000], Array(3,1,-2), FALSE)
Call HSORTING([A2:Z1000], Array(1003,1,2), FALSE)
Hãy chép toàn bộ mã trong Module zzzSort_UDF vào ứng dụng của bạn để thực thi các hàm.
Hình ảnh tham khảo:
Các bạn có thể tham khảo thêm hàm sắp xếp mảng khác:
Hàm Tự động sắp xếp bổ trợ Chế độ Sort linh hoạt cho Excel
Hôm nay tôi lại chia sẻ cho các bạn các Hàm UDF được viết bằng VBA, nhằm mục đích để sắp xếp tự động thay vì phải điều chỉnh bằng tay ở chế độ sắp xếp. Có phải các bạn rất khó khăn trong việc thực hiện sắp xếp với chế độ sort của Excel, hay bạn phải dùng tay thực hiện sắp xếp quá nhiều lần...
giaiphapexcel.com
Các bạn muốn học VBA nhanh nhất có thể hãy tham khảo tool hỗ trợ lập trình VBA:
VBA_FastCode v2.22 - Công cụ học và viết mã VBA một cách nhanh nhất (*27/10/2023)
***** CẬP NHẬT MỚI v2.2 ***** -------------------------------------------------------------------------- Add-in được chia sẻ dưới đây, đó là những gì tôi hiểu biết về VBA và đã viết ra nó. Một Add-in Tools chỉnh sửa code VBA rất đơn giản nhưng có thể giúp các bạn học VBA và viết code nhanh...
giaiphapexcel.com
File đính kèm
Lần chỉnh sửa cuối: