Xắp xếp lại dòng dữ liệu theo thứ tự!

Liên hệ QC

Sơn Mã

Thành viên hoạt động
Tham gia
30/12/16
Bài viết
114
Được thích
2
Mình có file dữ liệu bị đảo dòng không theo thứ tự nên cần sắp xếp lại các dòng theo thứ tự như sau:
1/ Xếp thứ tự các dòng theo thời gian từ xa lại gần đây.
2/ Trường hợp thời gian giống nhau thì STT nào nhỏ hơn thì xếp trước
3/ Trường hợp có nhiều dòng giống nhau cả thời gian, STT và data thì xoá bớt đi chỉ để lại 1 dòng.
- Mong các bạn xem giúp. Xin cảm ơn rất nhiều!
 

File đính kèm

  • loctheothutu_ngaygio.rar
    968.1 KB · Đọc: 23
Mình có file dữ liệu bị đảo dòng không theo thứ tự nên cần sắp xếp lại các dòng theo thứ tự như sau:
1/ Xếp thứ tự các dòng theo thời gian từ xa lại gần đây.
2/ Trường hợp thời gian giống nhau thì STT nào nhỏ hơn thì xếp trước
3/ Trường hợp có nhiều dòng giống nhau cả thời gian, STT và data thì xoá bớt đi chỉ để lại 1 dòng.
- Mong các bạn xem giúp. Xin cảm ơn rất nhiều!

Copy 3 cột ABC sang chỗ nào đó để lưu bản gốc.
Bạn chạy thử Sub này nhé.
PHP:
Public Sub GPE()
With Sheet1
    With .Range("A2", .Range("C2").End(xlDown))
        .Sort Key1:=Range("B2"), order1:=xlAscending, Key2:=Range("A2"), order2:=xlAscending
        .RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo
    End With
End With
End Sub
 
Mình có file dữ liệu bị đảo dòng không theo thứ tự nên cần sắp xếp lại các dòng theo thứ tự như sau:
1/ Xếp thứ tự các dòng theo thời gian từ xa lại gần đây.
2/ Trường hợp thời gian giống nhau thì STT nào nhỏ hơn thì xếp trước
3/ Trường hợp có nhiều dòng giống nhau cả thời gian, STT và data thì xoá bớt đi chỉ để lại 1 dòng.

(1) & (2) Bạn tự làm;
PHP:
Option Explicit
Sub LoaiTrung()
Dim Dict As Object, J As Long, W As Long
Dim Arr() As Variant, TmpArr As Variant, Tmp As Variant

With Sheets("Sheet1")
    Set Dict = CreateObject("Scripting.Dictionary")
    TmpArr = Sheet1.Range([A2], [c2].End(xlDown)).Value
    
    ReDim Arr(1 To UBound(TmpArr, 1), 1 To 3)
    For J = 1 To UBound(TmpArr, 1)
        Tmp = TmpArr(J, 1) & TmpArr(J, 2) & TmpArr(J, 3)
        If Not IsEmpty(TmpArr(J, 2)) And Not Dict.exists(Tmp) Then
            W = W + 1
             Dict.Add Tmp, W
             Arr(W, 1) = TmpArr(J, 1)
             Arr(W, 2) = TmpArr(J, 2)
             Arr(W, 3) = TmpArr(J, 3)
        Else
        End If
    Next J
    .Range("M2").Resize(W, 3).Value = Arr()
End With

End Sub
 
Copy 3 cột ABC sang chỗ nào đó để lưu bản gốc.
Bạn chạy thử Sub này nhé.
PHP:
Public Sub GPE()
With Sheet1
    With .Range("A2", .Range("C2").End(xlDown))
        .Sort Key1:=Range("B2"), order1:=xlAscending, Key2:=Range("A2"), order2:=xlAscending
        .RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo
    End With
End With
End Sub
Thầy Ba Tê ơi, thầy có thể giúp em cho trường hợp định dạng ngày tháng như file gửi kèm được không ạ. Và khi sắp xếp lại thứ tự các dòng và xoá bớt các dòng nếu các dòng giống nhau thì thầy có thể điều chỉnh là sắp xếp và xoá cả dòng đó đi chứ không xoá nguyên dòng theo 3 cột. Mong thầy xem giúp ạ. Xin cảm ơn thầy!
 

File đính kèm

  • loctheothutu_ngaygio.xlsx
    831.1 KB · Đọc: 17
Thầy Ba Tê ơi, thầy có thể giúp em cho trường hợp định dạng ngày tháng như file gửi kèm được không ạ. Và khi sắp xếp lại thứ tự các dòng và xoá bớt các dòng nếu các dòng giống nhau thì thầy có thể điều chỉnh là sắp xếp và xoá cả dòng đó đi chứ không xoá nguyên dòng theo 3 cột. Mong thầy xem giúp ạ. Xin cảm ơn thầy!
Sort ưu tiên cột A rồi đến cột B ?
PHP:
Public Sub GPE()
With Sheet1
    With .Range("A2", .Range("C2").End(xlDown))
        .Sort Key1:=Range("A2"), order1:=xlAscending, Key2:=Range("B2"), order2:=xlAscending
        .RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo
    End With
End With
End Sub
Đoc hoài cũng không hiểu chỗ này:
Và khi sắp xếp lại thứ tự các dòng và xoá bớt các dòng nếu các dòng giống nhau thì thầy có thể điều chỉnh là sắp xếp và xoá cả dòng đó đi chứ không xoá nguyên dòng theo 3 cột.
 
Lần chỉnh sửa cuối:
Sort ưu tiên cột A rồi đến cột B ?
PHP:
Public Sub GPE()
With Sheet1
    With .Range("A2", .Range("C2").End(xlDown))
        .Sort Key1:=Range("A2"), order1:=xlAscending, Key2:=Range("B2"), order2:=xlAscending
        .RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo
    End With
End With
End Sub
Đoc hoài cũng không hiểu chỗ này:

- Dạ, cảm ơn thầy nhiều quá!
 
Web KT

Bài viết mới nhất

Back
Top Bottom