Tìm Công thức để tìm số ID duy nhất (1 người xem)

Người dùng đang xem chủ đề này

ninhmoon

Thành viên tiêu biểu
Tham gia
3/3/14
Bài viết
525
Được thích
48
Em gửi!
Em có file gồm 12 tháng lương
Nhưng Em muốn tìm giá trị số ID là duy nhất trong 12 tháng
nhưng tháng 12 vẫn để nguyên thứ tự của tháng 12 còn các số ID khác không có hoặc không trùng ở tháng 12 sẽ được đẩy xuống dưới tháng 12

http://www.mediafire.com/file/ieh88nc20sqtywj/Hoi.xlsx
Cảm ơn ạ.
 
Em gửi!
Em có file gồm 12 tháng lương
Nhưng Em muốn tìm giá trị số ID là duy nhất trong 12 tháng
nhưng tháng 12 vẫn để nguyên thứ tự của tháng 12 còn các số ID khác không có hoặc không trùng ở tháng 12 sẽ được đẩy xuống dưới tháng 12

http://www.mediafire.com/file/ieh88nc20sqtywj/Hoi.xlsx
Cảm ơn ạ.

Bạn chạy thử cái này:
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As String, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:E4443").Value: N = UBound(sArr)
ReDim dArr(1 To N, 1 To 4)
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
    End If
Next I
Range("AH4892").Resize(K, 4) = dArr
Set Dic = Nothing
End Sub
 
OK cảm ơn anh
Hay quá.
 
Em gửi!
Em có file gồm 12 tháng lương
Nhưng Em muốn tìm giá trị số ID là duy nhất trong 12 tháng
nhưng tháng 12 vẫn để nguyên thứ tự của tháng 12 còn các số ID khác không có hoặc không trùng ở tháng 12 sẽ được đẩy xuống dưới tháng 12

http://www.mediafire.com/file/ieh88nc20sqtywj/Hoi.xlsx
Cảm ơn ạ.
Bài này đơn giản, thì bạn chon tất cả ID của tháng 1->11 copy qua sheet khác rồi dùng chức năng Remove duplicate, sau đó Vlookup cái dữ liệu vừa remove duplicate xong với tháng 12, lọc những cái #N/A ra, copy rồi paste vào tháng 12 thôi,
Hoặc dùng CT này tại AK4891:
Mã:
=INDEX($E$5:$E$4438,SMALL(IFERROR(MATCH(ROW($E$5:$E$4438)-4,NOT(ISNUMBER(MATCH($E$5:$E$4438,$E$4445:$E$4890,)))*(LEN($E$5:$E$4438)>5)*MATCH($E$5:$E$4438,$E$5:$E$4438,),),""),ROW(A1)))
Ctrl+Shift+Enter rồi fill xuống chừng nào lỗi thì dừng!!!
https://www.fshare.vn/file/6WU75UL7UE5A
 
Bạn chạy thử cái này:
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As String, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:E4443").Value: N = UBound(sArr)
ReDim dArr(1 To N, 1 To 4)
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
    End If
Next I
Range("AH4892").Resize(K, 4) = dArr
Set Dic = Nothing
End Sub
Code này của thầy chạy ra mã 15110007, tháng 12 cũng có mã này!!![TABLE="width: 152"]
[TR]
[TD="width: 152, align: right"][/TD]
[/TR]
[/TABLE]


 
Code này của thầy chạy ra mã 15110007, tháng 12 cũng có mã này!!![TABLE="width: 152"]
[TR]
[TD="width: 152, align: right"][/TD]
[/TR]
[/TABLE]



Tôi không kiểm tra hết cột ID, nó không chỉ có Number mà còn có String như "Mã", "MS" ....
Kiểm tra lại Sub này coi sao, dữ liệu cột E không chuẩn!
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As Variant, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    If sArr(I, 1) <> Empty And IsNumeric(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:E4443").Value: N = UBound(sArr)
ReDim dArr(1 To N, 1 To 4)
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And IsNumeric(Tem) And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
    End If
Next I
Range("AH4892").Resize(5000, 4).ClearContents
Range("AH4892").Resize(K, 4) = dArr
Set Dic = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Bài này đơn giản, thì bạn chon tất cả ID của tháng 1->11 copy qua sheet khác rồi dùng chức năng Remove duplicate, sau đó Vlookup cái dữ liệu vừa remove duplicate xong với tháng 12, lọc những cái #N/A ra, copy rồi paste vào tháng 12 thôi,
Hoặc dùng CT này tại AK4891:
Mã:
=INDEX($E$5:$E$4438,SMALL(IFERROR(MATCH(ROW($E$5:$E$4438)-4,NOT(ISNUMBER(MATCH($E$5:$E$4438,$E$4445:$E$4890,)))*(LEN($E$5:$E$4438)>5)*MATCH($E$5:$E$4438,$E$5:$E$4438,),),""),ROW(A1)))
Ctrl+Shift+Enter rồi fill xuống chừng nào lỗi thì dừng!!!
https://www.fshare.vn/file/6WU75UL7UE5A
Cũnglà
một ý hay
nhưng mà nó sẽ không theo thứ tự khi tháng 12 vẫn để nguyên các tổ và giữ đúng vị trí đó.
 
Tôi không kiểm tra hết cột ID của bạn, nó không chỉ có Number mà còn có String như "Mã", "MS" ....
Kiểm tra lại Sub này coi sao, dữ liệu không chuẩn!
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As Variant, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    If sArr(I, 1) <> Empty And IsNumeric(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:E4443").Value: N = UBound(sArr)
ReDim dArr(1 To N, 1 To 4)
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And IsNumeric(Tem) And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
    End If
Next I
Range("AH4892").Resize(K, 4) = dArr
Set Dic = Nothing
End Sub

Dạ vâng ạ.
Em chỉ lấy dữ liệu dạng number còn dạng string, MS, mã số.
Em ko lấy.
Cảm ơn bác.
 
Tôi không kiểm tra hết cột ID của bạn, nó không chỉ có Number mà còn có String như "Mã", "MS" ....
Kiểm tra lại Sub này coi sao, dữ liệu cột E không chuẩn!
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As Variant, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    If sArr(I, 1) <> Empty And IsNumeric(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:E4443").Value: N = UBound(sArr)
ReDim dArr(1 To N, 1 To 4)
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And IsNumeric(Tem) And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
    End If
Next I
Range("AH4892").Resize(5000, 4).ClearContents
Range("AH4892").Resize(K, 4) = dArr
Set Dic = Nothing
End Sub
Code hoạt động tốt rồi thầy!!!
 
Cũnglà
một ý hay
nhưng mà nó sẽ không theo thứ tự khi tháng 12 vẫn để nguyên các tổ và giữ đúng vị trí đó.
Chưa hiểu ý bạn ta, chỉ thêm những dữ liệu chưa có vào tháng 12 thôi mà, file của bạn cũng yêu cầu vậy mà!!!"Những ID của tháng 1-11 không có và không trùng ở tháng 12 sẽ được đưa xuống dưới"
 
Tôi không kiểm tra hết cột ID, nó không chỉ có Number mà còn có String như "Mã", "MS" ....
Kiểm tra lại Sub này coi sao, dữ liệu cột E không chuẩn!
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As Variant, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    If sArr(I, 1) <> Empty And IsNumeric(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:E4443").Value: N = UBound(sArr)
ReDim dArr(1 To N, 1 To 4)
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And IsNumeric(Tem) And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
    End If
Next I
Range("AH4892").Resize(5000, 4).ClearContents
Range("AH4892").Resize(K, 4) = dArr
Set Dic = Nothing
End Sub
Vớicodetrên
Em muốn lấy thêm cột F nữa thì code sẽ được sửa như thế nào ạ.
 
Vớicodetrên
Em muốn lấy thêm cột F nữa thì code sẽ được sửa như thế nào ạ.

Cột F có gì đâu mà lấy? Trống trơn làm sao kiểm tra.
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As Variant, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    If sArr(I, 1) <> Empty And IsNumeric(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:F4443").Value: N = UBound(sArr) 'E4443 -----> F4443'
ReDim dArr(1 To N, 1 To 5) ' 1 to 4 thành 1 to 5'
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And IsNumeric(Tem) And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
        dArr(K, 5) = sArr(I, 6) 'Them dong nay'
    End If
Next I
Range("AH4892").Resize(5000, 5).ClearContents ' Thay 4 thanh 5'
Range("AH4892").Resize(K, 5) = dArr ' Thay 4 thanh 5'
Set Dic = Nothing
End Sub
 
Cột F có gì đâu mà lấy? Trống trơn làm sao kiểm tra.
PHP:
Public Sub GPE()
Dim Dic As Object, Tem As Variant, sArr(), dArr(), I As Long, K As Long, N As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range("E4445:E4890").Value: N = UBound(sArr)
For I = 1 To N
    If sArr(I, 1) <> Empty And IsNumeric(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
sArr = Range("A5:F4443").Value: N = UBound(sArr) 'E4443 -----> F4443'
ReDim dArr(1 To N, 1 To 5) ' 1 to 4 thành 1 to 5'
For I = 1 To N
    Tem = sArr(I, 5)
    If Tem <> Empty And IsNumeric(Tem) And Not Dic.Exists(Tem) Then
        K = K + 1: Dic.Item(Tem) = ""
        dArr(K, 1) = sArr(I, 1): dArr(K, 2) = sArr(I, 2)
        dArr(K, 3) = sArr(I, 4): dArr(K, 4) = sArr(I, 5)
        dArr(K, 5) = sArr(I, 6) 'Them dong nay'
    End If
Next I
Range("AH4892").Resize(5000, 5).ClearContents ' Thay 4 thanh 5'
Range("AH4892").Resize(K, 5) = dArr ' Thay 4 thanh 5'
Set Dic = Nothing
End Sub

OK
Cảm ơn Bác, Cột F có dữ liệu Tên
Em xóa đi, nhưng bản gốc thì Có.
Cảm ơn Bác nhiều dữ liệu đã được lọc ra khá tốt.
 

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

Back
Top Bottom