vanlinh_2904
Thành viên hoạt động
- Tham gia
- 20/10/12
- Bài viết
- 105
- Được thích
- 3
Phải thế này không?Nhờ các Anh/Chị giúp mình VBA để sắp xếp theo thứ tự tăng dần dựa vào ký tự đầu từ trái sang phải như file đính kèm. cảm ơn các anh/chị.
Sub Sap_Xep()
With Sheet1.Range("A3:B23")
.Sort .Cells(3, 1), 1, Header:=xlGuess
End With
End Sub
Chạy thấy đúng với định dạng là kiểu text, nếu số liệu cột A vừa kiểu số và text sẽ bị sai, bạn xem giúp mình nhéPhải thế này không?
Mã:Sub Sap_Xep() With Sheet1.Range("A3:B23") .Sort .Cells(3, 1), 1, Header:=xlGuess End With End Sub
Tôi thấy nó chạy đúng với kết quả mong muốn rồi mà.Chạy thấy đúng với định dạng là kiểu text, nếu số liệu cột A vừa kiểu số và text sẽ bị sai, bạn xem giúp mình nhé
Đây bạn, nếu cột A dạng số thì kết quả bị sai. Bạn xem lại giúp mìnhTôi thấy nó chạy đúng với kết quả mong muốn rồi mà.
Nếu bạn thay thay dữ liệu đầu vào, thì nhập tay lại kết quả mong muốn rồi gửi lên xem thế nào.
Chú ý: phải lường trước các trường hợp rồi gửi yêu cầu một lượt,
Tránh tình trạng hỗ trợ xong lại "đẻ" ra thêm các yêu cầu khác.
Theo dữ liệu bạn đưa cùng kết quả mong muốn thì chỉ cần đổi 1-->2 như ở code dưới.Đây bạn, nếu cột A dạng số thì kết quả bị sai. Bạn xem lại giúp mình
Sub Sap_Xep()
With Sheet1.Range("A3:B23")
.Sort .Cells(3, 2), 1, Header:=xlGuess
End With
End Sub
Cột 2 có thể là chuỗi bất kỳ. Mặc dù tình cờ nó khớp với điều kiện lọc, nhưng đề bài là sort cột 1 mà bạn lại sort cột 2?Theo dữ liệu bạn đưa cùng kết quả mong muốn thì chỉ cần đổi 1-->2 như ở code dưới.
Mã:Sub Sap_Xep() With Sheet1.Range("A3:B23") .Sort .Cells(3, 2), 1, Header:=xlGuess End With End Sub
Option Explicit
Sub Sap_Xep()
Dim lr&, i&, j&, rng, max1, max2, max3
lr = Cells(Rows.Count, "A").End(xlUp).Row
rng = Range("A4:C" & lr).Value
For i = 1 To lr - 3
rng(i, 3) = Left(rng(i, 1) & "0000000000", 10)
Next
For i = 1 To lr - 4
For j = i + 1 To lr - 3
If rng(i, 3) > rng(j, 3) Then
max3 = rng(j, 3): max2 = rng(j, 2): max1 = rng(j, 1)
rng(j, 1) = rng(i, 1): rng(j, 2) = rng(i, 2): rng(j, 3) = rng(i, 3)
rng(i, 3) = max3: rng(i, 2) = max2: rng(i, 1) = max1
End If
Next
Next
Range("A4:B100000").ClearContents
Range("A4").Resize(UBound(rng), 2).Value = rng
End Sub