Mong GPE giúp đỡ mình trường hợp này với: Dữ liệu ở sheet1: có nhiều số liệu trùng nhau (giống nhau). Mình cần xoá bớt đi những dữ liệu trùng nhau chỉ giữ lại 1 giữ liệu thì làm như thế nào ạ? Xin cảm ơn!
Cảm ơn bạn, có cách nào dùng nguyên VBA và kết quả dán sang sheet2 với ô tương ứng không ạ? Xin cảm ơn!Công thức hổng nghĩ ra... Bạn xem thử file đính kèm nhé!
Cảm ơn bạn, có cách nào dùng nguyên VBA và kết quả dán sang sheet2 với ô tương ứng không ạ? Xin cảm ơn!
Đây bạn này, bạn xem giúp nhé!Bạn cho ví dụ xem...
thì con số 4 ở đáp án fải có tọa độ là (5,5) chứ không fải là (4,7) như bạn dẫn ra như vậy.KẾT QUẢ XOÁ
(XOÁ TỪ TRÊN XUỐNG DƯỚI, TỪ TRÁI QUA PHẢI)
Ui, xin lỗi mình nhầm. Bạn đúng rồi ạ!1 khi bạn viết vầy:
thì con số 4 ở đáp án fải có tọa độ là (5,5) chứ không fải là (4,7) như bạn dẫn ra như vậy.
Option Explicit
Sub TaoBangDuyNhat()
Dim Arr(), Dict As Object
Dim Dg As Long, Cot As Byte, J As Long, Col As Byte
Arr() = Sheet1.UsedRange.Value
ReDim dArr(1 To UBound(Arr()), 1 To UBound(Arr(), 2))
Set Dict = CreateObject("Scripting.Dictionary")
For Col = 1 To UBound(Arr(), 2)
For Dg = 1 To UBound(Arr())
If Not IsEmpty(Arr(Dg, Col)) And Not Dict.exists(Arr(Dg, Col)) Then
J = J + 1: Dict.Add Arr(Dg, Col), J
dArr(Dg, Col) = Arr(Dg, Col)
End If
Next Dg
Next Col
Sheet2.Range(Sheet1.UsedRange(1).Address).Resize(UBound(Arr()), UBound(Arr(), 2)).Value = dArr()
End Sub
Mình thấy1 khi bạn viết vầy:
thì con số 4 ở đáp án fải có tọa độ là (5,5) chứ không fải là (4,7) như bạn dẫn ra như vậy.
Hihi, thì em nói thằng nào xuất hiện đầu tiên thì giữ lại màÔi, cái ngôn ngữ Việt!
"Xóa từ trên xuống dưới" <> "Xóa từ hàng trên xuống hàng dưới"
Mà thực ra từ "xóa" không đồng nghĩa với "thịt" đâu Thầy!
Ở đây fải hiểu là:
"Gặp đầu tiên là để "nuôi"; Các cái sau như nó mới "thịt""
Rất chuẩn và chính xác ạ! Nếu sau khi xoá xong, xem xong kết quả rồi, muốn gom các dữ liệu kết quả đó về 1 cột hoặc 1 dòng hoặc gom về một vùng không có ô trống ngăn cách thì không biết có cách nào xử lí được không ạ? Mong sự giúp đỡ của bạn. Cảm ơn bạn nhiều!PHP:Option Explicit Sub TaoBangDuyNhat() Dim Arr(), Dict As Object Dim Dg As Long, Cot As Byte, J As Long, Col As Byte Arr() = Sheet1.UsedRange.Value ReDim dArr(1 To UBound(Arr()), 1 To UBound(Arr(), 2)) Set Dict = CreateObject("Scripting.Dictionary") For Col = 1 To UBound(Arr(), 2) For Dg = 1 To UBound(Arr()) If Not IsEmpty(Arr(Dg, Col)) And Not Dict.exists(Arr(Dg, Col)) Then J = J + 1: Dict.Add Arr(Dg, Col), J dArr(Dg, Col) = Arr(Dg, Col) End If Next Dg Next Col Sheet2.Range(Sheet1.UsedRange(1).Address).Resize(UBound(Arr()), UBound(Arr(), 2)).Value = dArr() End Sub
Bạn xem file đính kèm. Gồm cả 3 thể loại luôn (vùng, 1 dòng hay 1 cột)....Rất chuẩn và chính xác ạ! Nếu sau khi xoá xong, xem xong kết quả rồi, muốn gom các dữ liệu kết quả đó về 1 cột hoặc 1 dòng hoặc gom về một vùng không có ô trống ngăn cách thì không biết có cách nào xử lí được không ạ? Mong sự giúp đỡ của bạn. Cảm ơn bạn nhiều!
P/S: Dạ, cái này mình làm được rồi ạ. Xin cảm ơn GPE!
Option Explicit
Sub Trung03Cot()
Dim Rws As Long, J As Long, W As Integer
Dim Rg2 As Range, Rg3 As Range, Arr(), dArr(), Rg0 As Range, sRg1 As Range, sRg2 As Range
Set Rg0 = Sheets("DATe").UsedRange
Rws = Rg0.Rows.Count
Arr() = Rg0(1).Resize(Rws).Value
ReDim dArr(1 To Rws, 1 To 1)
For J = 1 To UBound(Arr())
Set Rg2 = Rg0(1).Offset(, 1).Resize(Rws)
Set Rg3 = Rg0(1).Offset(, 2).Resize(Rws)
Set sRg1 = Rg2.Find(Arr(J, 1), , xlFormulas, xlWhole)
If Not sRg1 Is Nothing Then
Set sRg2 = Rg3.Find(Arr(J, 1))
If Not sRg2 Is Nothing Then
W = W + 1: dArr(W, 1) = Arr(J, 1)
End If
Else
End If
Next J
Sheets("KQ").[B1].Resize(Rws).Value = dArr()
End Sub
Thầy ChanhTQ và GPE có thể xem trường hợp nếu trong sheet(DATE) có nhiều cột dữ liệu muốn lọc thì làm thế nào (trường hợp tổng quát cho n cột bất kì chẳng hạn). Xin cảm ơn!PHP:Option Explicit Sub Trung03Cot() Dim Rws As Long, J As Long, W As Integer Dim Rg2 As Range, Rg3 As Range, Arr(), dArr(), Rg0 As Range, sRg1 As Range, sRg2 As Range Set Rg0 = Sheets("DATe").UsedRange Rws = Rg0.Rows.Count Arr() = Rg0(1).Resize(Rws).Value ReDim dArr(1 To Rws, 1 To 1) For J = 1 To UBound(Arr()) Set Rg2 = Rg0(1).Offset(, 1).Resize(Rws) Set Rg3 = Rg0(1).Offset(, 2).Resize(Rws) Set sRg1 = Rg2.Find(Arr(J, 1), , xlFormulas, xlWhole) If Not sRg1 Is Nothing Then Set sRg2 = Rg3.Find(Arr(J, 1)) If Not sRg2 Is Nothing Then W = W + 1: dArr(W, 1) = Arr(J, 1) End If Else End If Next J Sheets("KQ").[B1].Resize(Rws).Value = dArr() End Sub