Hàm sắp xếp mảng ngang dọc với Thuật toán QuickSort (sắp xếp Tiếng Việ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 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)
Cách gõ nhanh: =VSORT( và ấn tổ hợp phím tắt Ctrl+Shift+A
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 H
Ví dụ gọi thủ tục trong code VBA:
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:
github.com/SanbiVN/SuperQuickSort2D/raw/main/images/excel%20quicksort%20highlight.gif
Các bạn có thể tham khảo thêm hàm sắp xếp mảng khác:
giaiphapexcel.com/diendan/threads/155555/
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:
giaiphapexcel.com/diendan/threads/152720/
www.giaiphapexcel.com/diendan/threads/h%C3%A0m-s%E1%BA%AFp-x%E1%BA%BFp-m%E1%BA%A3ng-ngang-d%E1%BB%8Dc-v%E1%BB%9Bi-thu%E1%BA%ADt-to%C3%A1n-quicksort-s%E1%BA%AFp-x%E1%BA%BFp-ti%E1%BA%BFng-vi%E1%BB%87t-cho-excel.155434/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Bình luận