- Tham gia
- 22/7/14
- Bài viết
- 355
- Được thích
- 31
Chắc là :Chào các bạn. Mình có 1 file quản lý tên hàng của công ty. Do mã hàng nó sắp xếp trùng nhau. Mình muốn xóa những mã hàng nào trùng phía dưới chỉ chừa lại 1 mã hàng nằm trên cùng làm đại diện thôi. CHo mình hỏi Code viết làm sao để xóa được. Em xin cảm ơn anh chị
View attachment 233798
Thì Bạn làm sang cột bên cạnh xong dán nó vào. Ai lại chơi xóa chứng cứ như vậyÝ MÌNH XÓA LUÔN TRÊN VÙNG B5;B27 . còn Vùng D527 mình làm để ví dụ sau khi xóa thôi. sau khi xóa nó y như hình nek bạn
View attachment 233800
Thì cho nó một đoạn code những Cell nào giống nhau thì Merge and Center.Chào các bạn. Mình có 1 file quản lý tên hàng của công ty. Do mã hàng nó sắp xếp trùng nhau. Mình muốn xóa những mã hàng nào trùng phía dưới chỉ chừa lại 1 mã hàng nằm trên cùng làm đại diện thôi. CHo mình hỏi Code viết làm sao để xóa được. Em xin cảm ơn anh chị
View attachment 233798
Dạ dữ liệu đó từ 1 phần mềm khác Xuất ra. em muốn xóa đi những ký tự trùng thôi chừa lại 1 ký tự đại diện thôi. Em không muốn Merge and Center. Mong anh chị giúp đởThì cho nó một đoạn code những Cell nào giống nhau thì Merge and Center.
Nhập liệu vào thì tốn công, sao bạn xóa nó đi và chừa lại những Cell trống để làm gì? Nếu không ảnh hưởng gì đến các cột khác thì tại sao không sử dụng Remove Duplicates cho nhanh.
Ý mình là xóa nhưng con số trùng nhau chỉ chừa lại 1 số đai diện nằm trên cùng thôi. Mình có thử áp dụng công thức của bạn vẫn không được.Thì Bạn làm sang cột bên cạnh xong dán nó vào. Ai lại chơi xóa chứng cứ như vậy![]()
Sub XoaTrung()
Dim cel As Range
Dim Dic As Object
Set Dic = CreateObject("scripting.dictionary")
For Each cel In Selection
If Not Dic.exists(cel.Value) Then
Dic.Add cel.Value, ""
Else
cel.ClearContents
End If
Next
End Sub
Bạn thử làm cách sau:Dạ dữ liệu đó từ 1 phần mềm khác Xuất ra. em muốn xóa đi những ký tự trùng thôi chừa lại 1 ký tự đại diện thôi. Em không muốn Merge and Center. Mong anh chị giúp đở
Bài đã được tự động gộp:
Ý mình là xóa nhưng con số trùng nhau chỉ chừa lại 1 số đai diện nằm trên cùng thôi. Mình có thử áp dụng công thức của bạn vẫn không được.View attachment 233816
Cái này sao mà dùng công thức được. ý của em là xóa đi những con số trùng mà
=IF(COUNTIF($A$2:$A2,A2)=1,A2,"")
dạ em cảm ơn anh.Code chạy hay quá. Em cảm ơn anh nhiều lắmChọn vùng rồi chạy code:
PHP:Sub XoaTrung() Dim cel As Range Dim Dic As Object Set Dic = CreateObject("scripting.dictionary") For Each cel In Selection If Not Dic.exists(cel.Value) Then Dic.Add cel.Value, "" Else cel.ClearContents End If Next End Sub
Sub XoaTrung()
Dim cel As Range
Dim Dic As Object
Set Dic = CreateObject("scripting.dictionary")
For Each cel In Range("B3:B5000")
If Not Dic.exists(cel.Value) Then
Dic.Add cel.Value, ""
Else
cel.ClearContents
End If
Next
End Sub
dạ em cảm ơn anh.Code chạy hay quá. Nhưng em test bảng tính em 5000 ô nó giật giật sao anh á
Mã:Sub XoaTrung() Dim cel As Range Dim Dic As Object Set Dic = CreateObject("scripting.dictionary") For Each cel In Range("B3:B5000") If Not Dic.exists(cel.Value) Then Dic.Add cel.Value, "" Else cel.ClearContents End If Next End Sub
Thử code sau, với điều kiện bất kỳ sheet nào đó có dữ liệu bắt đầu là B5.Chào các bạn. Mình có 1 file quản lý tên hàng của công ty. Do mã hàng nó sắp xếp trùng nhau. Mình muốn xóa những mã hàng nào trùng phía dưới chỉ chừa lại 1 mã hàng nằm trên cùng làm đại diện thôi. CHo mình hỏi Code viết làm sao để xóa được. Em xin cảm ơn anh chị
Sub XoaDup()
Dim xCell As Range
Dim Chon As Range
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Set Chon = Range("B5", Range("B10000").End(xlUp))
For Each xCell In Chon
If Not Dic.exists(xCell.Value) Then
Dic.Add xCell.Value, ""
Else
xCell.ClearContents
End If
Next
End Sub
cảm ơn anh nhiều. Code hay lắm ạThử code sau, với điều kiện bất kỳ sheet nào đó có dữ liệu bắt đầu là B5.
Mã:Sub XoaDup() Dim xCell As Range Dim Chon As Range Dim Dic As Object Set Dic = CreateObject("Scripting.Dictionary") Set Chon = Range("B5", Range("B10000").End(xlUp)) For Each xCell In Chon If Not Dic.exists(xCell.Value) Then Dic.Add xCell.Value, "" Else xCell.ClearContents End If Next End Sub
Bạn thử làm cách sau:
sử dụng cột phụ:
Rồi fill xuống.PHP:=IF(COUNTIF($A$2:$A2,A2)=1,A2,"")
1.Sau đó để con trỏ chuột trên đầu: Nhấn CTRL+SHIFT+L
2. Sau đó fillter chọn Blank, Sau đó xóa những dòng đó đi.
3. Bỏ Filter xem kết quả.
Thử code sau, với điều kiện bất kỳ sheet nào đó có dữ liệu bắt đầu là B5.
Mã:Sub XoaDup() Dim xCell As Range Dim Chon As Range Dim Dic As Object Set Dic = CreateObject("Scripting.Dictionary") Set Chon = Range("B5", Range("B10000").End(xlUp)) For Each xCell In Chon If Not Dic.exists(xCell.Value) Then Dic.Add xCell.Value, "" Else xCell.ClearContents End If Next End Sub
Hầu như việc này tôi đã góp ý cho rất nhiều thành viên rồi nhưng bạn lại không đọc.anh ơi cho em hỏi em muốn xóa thêm 1 cột bên trái nữa ( cột ngày ) thì phải sửa code thế nào. Em không biết thêm Resize vào chổ nào nữa. nghĩa là code trên chỉ xóa được 1 ô của cột mã hàng, giờ làm sao nếu đã xóa mã hàng thì xóa luôn ô cột ngày Resize (2) . mà sao em thêm Resize vào nó không chạy được
View attachment 233833
Thay dòng code này:
Set Chon = Range("B5", Range("B10000").End(xlUp))
Bởi dòng code này:
Set Chon = Range("B3", Range("C10000").End(xlUp))
Sub XoaTrung()
Dim cel As Range
Dim Dic As Object
Set Dic = CreateObject("scripting.dictionary")
For Each cel In Range("B3:c5000")
If Not Dic.exists(cel.Value) Then
Dic.Add cel.Value, ""
Else
cel.ClearContents
End If
Next
End Sub
Hầu như việc này tôi đã góp ý cho rất nhiều thành viên rồi nhưng bạn lại không đọc.
1/ Cụ thể là muốn làm cái gì đó thì phải có tiêu đề giống với thực tế: Bài 1 đưa cái hình dữ liệu bắt đầu là B5, bài 12 đưa cái hình dữ liệu bắt đầu là B3.
2/ Bài 1 yêu cầu thực hiện chỉ có cột B, bài 12 lại phát sinh cột C.
3/ Thay dòng code này:
Set Chon = Range("B3", Range("C10000").End(xlUp))
Thế chỗ dòng code này:
Set Chon = Range("B5", Range("B10000").End(xlUp))
Bạn sửa code của phuocam, đâu phải code trong bài viết của tôi.View attachment 233835
Mã:Sub XoaTrung() Dim cel As Range Dim Dic As Object Set Dic = CreateObject("scripting.dictionary") For Each cel In Range("B3:c5000") If Not Dic.exists(cel.Value) Then Dic.Add cel.Value, "" Else cel.ClearContents End If Next End Sub
Em đã thử code nó xóa được mổi mã hàng còn cột Ngày vẩn còn y. ý em Mã hàng là Khóa chính. nếu đã xóa Mã hàng thì Ngày cũng phải xóa theo luôn. tức là code chỉ cần đếm trùng trên mả hàng thôi mà khi xóa thì xóa thêm ô cột ngày nữa
Bài đã được tự động gộp:
Kiểu nó như vầy nek anh ơi
View attachment 233837
Sub XoaDup()
Dim xCell As Range
Dim Chon As Range
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Set Chon = Range("B3", Range("C10000").End(xlUp))
For Each xCell In Chon
If Not Dic.exists(xCell.Value) Then
Dic.Add xCell.Value, ""
Else
xCell.ClearContents
End If
Next
End Sub
Bạn sửa code của phuocam, đâu phải code trong bài viết của tôi.
Bạn lấy râu ông nọ cắm càm bà kia thì làm sao mà không sai, tôi sửa lại cho bạn.
Mã:Sub XoaDup() Dim xCell As Range Dim Chon As Range Dim Dic As Object Set Dic = CreateObject("Scripting.Dictionary") Set Chon = Range("B3", Range("C10000").End(xlUp)) For Each xCell In Chon If Not Dic.exists(xCell.Value) Then Dic.Add xCell.Value, "" Else xCell.ClearContents End If Next End Sub
Set rg = Range("B5:B27")
For i = rg.Rows.Count To 2 Step -1
If Application.Match(rg.Cells(i), rg, 0) <> i Then rg.Offset(i-1,0).Resize(1,2).ClearContents
Next i
Sub xoatrungok()
Dim rg As Range, i As Long
Set rg = Range("B3:B43")
For i = rg.Rows.Count To 2 Step -1
If Application.Match(rg.Cells(i), rg, 0) <> i Then rg.Offset(i - 1, 0).Resize(1, 2).ClearContents
Next i
End Sub
Dữ liệu cột C của bạn từ a1: a34 có cái nào trùng lặp đâu mà đòi xóa.View attachment 233841
dạ lần này em copy y chan Code của anh. Vẫn không xóa được cột ngày. Tức là dòng nào mã hàng xóa thì dòng ngày cũng phải xóa theo luôn
Bài đã được tự động gộp:
Mã:Sub xoatrungok() Dim rg As Range, i As Long Set rg = Range("B3:B43") For i = rg.Rows.Count To 2 Step -1 If Application.Match(rg.Cells(i), rg, 0) <> i Then rg.Offset(i - 1, 0).Resize(1, 2).ClearContents Next i End Sub
Code bác chạy rất nhanh và chính xác. Nhưng khi có dòng trống thì báo lổi . Ví dụ dữ liệu chỉ có từ B3:B30 mà trong code B3:B100 thì báo lỗi. bác có thể sửa lại giúp em bỏ qua dòng trống là ok. Ví dụ em cho dử liệu nguồn em là B3:B1000 là cố định chẳng hạn thì nếu dử liệu chỉ có B3:B10 thì không bị lỗi. em cảm ơn bác !
Vậy là bác lại hiểu nhầm rồi. Cột C đó mình không quan tâm. mình chỉ quan tâm cột mã hàng ( cột B) thôi, Nếu trùng cột B thì xóa dòng của cột B và xóa luôn dòng của cột C luôn bác ạDữ liệu cột C của bạn từ a1: a34 có cái nào trùng lặp đâu mà đòi xóa.