em chào các anh ạ
các anh giúp em vấn đề này với ạ
trong file em gửi đính kèm
1.khi nhấn data thì trong textbox sẽ là dữ liệu cell E4
2.khi nhấn sort thì những giá trị sắp xếp là C1,C2,C3,...C10,C11 chứ không phải là C1,C10,C11,...C2..
các anh giúp em với ạ
Kiểu này mình có thể gọi là "tùy cơ ứng biến" để sắp xếp nhé.
Ta tạo một mảng lấy từ dữ liệu, sau đó loại bỏ ký tự "C" để trở về dạng số, gán vào cột cạnh dữ liệu mình sắp xếp, sau đó sắp xếp bao luôn dữ liệu kể cả cột phụ này, rồi chọn cột phụ này làm cột sắp xếp, cuối cùng là xóa cột phụ.
Bạn thử xem code nhé:
[GPECODE=vb]Sub sapxep()
Dim Rng As Range, Arr As Variant, r As Long
Set Rng = Sheet1.Range("D4

21")
Arr = Rng.Value
For r = 1 To UBound(Arr)
Arr(r, 1) = Replace(Arr(r, 1), "C", 1, 1)
Next
With Rng.Offset(, -1)
.Value = Arr
.Resize(, 2).Sort .Resize(1, 1), 1
.ClearContents
End With
Set Rng = Nothing: Erase Arr
End Sub
[/GPECODE]
===========================================================
Phần thêm:
Nếu bạn muốn bấm lần thứ 1 nút SORT (màu xanh của bạn) thành sort từ A > Z và bấm lần tiếp theo sẽ ngược lại thì bạn dùng thủ tục sau:
[GPECODE=vb]Sub sapxep()
Dim Rng As Range, Arr As Variant, r As Long
Set Rng = Sheet1.Range("D4

21")
Arr = Rng.Value
For r = 1 To UBound(Arr)
Arr(r, 1) = Replace(Arr(r, 1), "C", 1, 1)
Next
With Sheet1.Shapes(Application.Caller)
.AlternativeText = IIf(.AlternativeText = "1", "2", "1")
r = .AlternativeText
End With
With Rng.Offset(, -1)
.Value = Arr
.Resize(, 2).Sort .Resize(1, 1), r
.ClearContents
End With
Set Rng = Nothing: Erase Arr
End Sub
[/GPECODE]