Đang viết tiếng Việt tự nhiên extract, "bí" luôn.Hi các bác
em có 1 bảng excel gồm 3 cột lưu các thông tin, trong đó có nhiều thông tin trùng lặp nhau
Em muốn extract dữ liệu duy nhất trong bảng này ra 1 bảng khác mà chưa biết làm thế nào ạ
e gửi kèm file miêu tả
Thank các bác nhiều ạ
Hi các bác
em có 1 bảng excel gồm 3 cột lưu các thông tin, trong đó có nhiều thông tin trùng lặp nhau
Em muốn extract dữ liệu duy nhất trong bảng này ra 1 bảng khác mà chưa biết làm thế nào ạ
e gửi kèm file miêu tả
Thank các bác nhiều ạ
Sub UniqueHMT()
Dim Dic As Object
Dim sArr(), dArr(), kQ, tAch
Dim i As Long, k As Long, cD, x As Long
Set Dic = CreateObject("scripting.dictionary")
sArr = Range([B5], [D65536].End(3)).Value
For i = 1 To UBound(sArr, 1)
cD = sArr(i, 1) & "#" & sArr(i, 2) & "#" & sArr(i, 3)
If Not Dic.exists(cD) Then
k = k + 1
Dic.Add cD, ""
ReDim Preserve dArr(1 To 1, 1 To k)
dArr(1, k) = cD
End If
Next i
ReDim kQ(1 To UBound(dArr, 2), 1 To 3)
For i = 1 To UBound(dArr, 2)
tAch = Split(dArr(1, i), "#")
For x = 0 To 2
kQ(i, x + 1) = tAch(x)
Next x
Next i
[H7:J100].ClearContents
[H7].Resize(UBound(dArr, 2), 3) = kQ
Set Dic = Nothing
End Sub
Trời ơi! Hoành tráng quá! Gì mà for, next, đít to tè lè vậyPHP:Sub UniqueHMT() Dim Dic As Object Dim sArr(), dArr(), kQ, tAch Dim i As Long, k As Long, cD, x As Long Set Dic = CreateObject("scripting.dictionary") sArr = Range([B5], [d65536].End(3)).Value With Dic For i = 1 To UBound(sArr, 1) cD = sArr(i, 1) & "#" & sArr(i, 2) & "#" & sArr(i, 3) If Not .exists(cD) Then k = k + 1 .Add cD, "" ReDim Preserve dArr(1 To 1, 1 To k) dArr(1, k) = cD End If Next i ReDim kQ(1 To UBound(dArr, 2), 1 To 3) For i = 1 To UBound(dArr, 2) tAch = Split(dArr(1, i), "#") For x = 0 To 2 kQ(i, x + 1) = tAch(x) Next x Next i [H7:J100].ClearContents [H7].Resize(UBound(dArr, 2), 3) = kQ End With Set Dic = Nothing End Sub
Sub Test()
Sheet1.Range("B4:D1000").AdvancedFilter 2, , Sheet1.Range("H6"), True
End Sub
Thầy ơi thầy dùng thử pm dịch ngôn ngữ của thầy ndu96081631 cho nhanh ạ.Đang viết tiếng Việt tự nhiên extract, "bí" luôn.
"Hi các bác", "Thank các bác nhiều ạ" là tân cổ giao duyên?...
Phải vào Lạc Việt tự điển xem nó là gì... Híc! Dở ngoại ngữ cũng khổ. Thôi chạy vậy.
- HMT: Dic có thuộc tính Key sao bạn không tận dụng cái này? Code sẽ ngắn hơn, gọn hơn, nhanh hơn khi bạn khai báo ReDim Preserve dArr(1 To 1, 1 To k) đấyPHP:Sub UniqueHMT() Dim Dic As Object Dim sArr(), dArr(), kQ, tAch Dim i As Long, k As Long, cD, x As Long Set Dic = CreateObject("scripting.dictionary") sArr = Range([B5], [d65536].End(3)).Value With Dic For i = 1 To UBound(sArr, 1) cD = sArr(i, 1) & "#" & sArr(i, 2) & "#" & sArr(i, 3) If Not .exists(cD) Then k = k + 1 .Add cD, "" ReDim Preserve dArr(1 To 1, 1 To k) dArr(1, k) = cD End If Next i ReDim kQ(1 To UBound(dArr, 2), 1 To 3) For i = 1 To UBound(dArr, 2) tAch = Split(dArr(1, i), "#") For x = 0 To 2 kQ(i, x + 1) = tAch(x) Next x Next i [H7:J100].ClearContents [H7].Resize(UBound(dArr, 2), 3) = kQ End With Set Dic = Nothing End Sub
Sư phụ ơi, em đang học code mà, sư phụ để cho em tự sướng tí, hì hìTrời ơi! Hoành tráng quá! Gì mà for, next, đít to tè lè vậy
Mình chơi cái đồ cổ này thử xem:
Mã:Sub Test() Sheet1.Range("B4:D1000").AdvancedFilter 2, , Sheet1.Range("H6"), True End Sub
Sư phụ ơi, em đang học code mà, sư phụ để cho em tự sướng tí, hì hì
Vừa trà chanh với lũ bạn học cùng lớp về nên em bị gián đoạn câu chuyện, 1 vòng lặp thì gõ 1-2-3 hơi mỏi tay sư phụ nhỉ, thôi cho em tự sướng lần nữa sư phụ nhé :Nếu đã "sướng" thế thì cố mà rút gọn còn 1 vòng lập thôi --> Thế càng sướng hơn!
Ẹc... Ẹc...
Sub UniqueHMT()
Dim Dic As Object
Dim sArr(), dArr()
Dim i As Long, k As Long, cD, j As Long
Set Dic = CreateObject("scripting.dictionary")
sArr = Range([B5], [D65536].End(3)).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 3)
For i = 1 To UBound(sArr, 1)
cD = sArr(i, 1) & sArr(i, 2) & sArr(i, 3)
If Not Dic.exists(cD) Then
k = k + 1
Dic.Add cD, k
For j = 1 To 3
dArr(k, j) = sArr(i, j)
Next j
End If
Next i
[H7:J100].ClearContents
[H7].Resize(k, 3) = dArr
Set Dic = Nothing
End Sub