xóa dòng rồi nó xóa cụt luôn cột G thì sao ?anh chị nào giúp em với ah
Thử:Gửi các anh chị
Em có một file cần xoá những dòng nào mà giá trị của nó ở cột B trùng với 1 trong các giá trị được liệt kê ở cột G
Chi tiết em mô tả ở file đính kèm
Nhờ anh chị support giúp em với ah
Sub XOA()
Dim i As Integer
Dim LR As Integer
LR = Range("A" & Rows.Count).End(xlUp).Row
For i = LR To 2 Step -1
If Range("B" & i).Value = Range("G" & i).Value Then
Range("B" & i).EntireRow.Delete
End If
Next i
MsgBox "Xoa xong"
End Sub
Không biết có phải như File đính kèm khôngKhông chạy được a ơi
cũng có thể trong 1 tình huống vô cùng hi hữu , dữ liệu sẽ được bố trí như vậyHình như bạn có sự nhầm lẫn gì đó ở đây...chắc phải đọc lại yêu cầu...!
Có thể sử dụng Format conditional kết hợp với fillter, để xóa dữ liệu theo ý bài nàyGửi các anh chị
Em có một file cần xoá những dòng nào mà giá trị của nó ở cột B trùng với 1 trong các giá trị được liệt kê ở cột G
Chi tiết em mô tả ở file đính kèm
Nhờ anh chị support giúp em với ah
Như file thì chỉ xoá những giá trị đầu tiên thôi ahKhông biết có phải như File đính kèm không
Vậy bài sẽ làm như sau: Đặt 1 Name(ma) có danh sách cột G
Bây giờ xét các giá trị trong cột B mà trùng với giá trị G1=ma thì xóa dòng.
Xin mời xem File
Vâng như vậy cũng được rồi ah, có điều cột G của em cũng 50 dòng, chọn 50 lần vậy cũng hơi đuối ah
Em cám ơn ah
Public Sub GPE_()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range([G2], [G2].End(xlDown)).Value
For I = 1 To UBound(sArr, 1)
If Not Dic.Exists(sArr(I, 1)) Then Dic.Add sArr(I, 1), ""
Next I
sArr = Range([A2], [A2].End(xlDown)).Resize(, 5).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 5)
For I = 1 To UBound(sArr, 1)
If Not Dic.Exists(sArr(I, 2)) Then
K = K + 1
For J = 1 To 5
dArr(K, J) = sArr(I, J)
Next J
End If
Next I
Range("A2:E1000").ClearContents
Range("A2:E2").Resize(K) = dArr
Set Dic = Nothing
End Sub
Mã:Option Explicit Sub GPE() Dim Arr, I&, J& With Sheet1 Arr = Range(.[G2], .[G5000].End(3)).Value For I = 1 To UBound(Arr) .Range(.[A1], .[A65000]).Resize(, 5).AutoFilter 2, Arr(I, 1) .Range(.[A2], .[A65000]).Resize(, 5).SpecialCells(xlCellTypeVisible).ClearContents .AutoFilterMode = False .Range(.[A2], .[A65000].End(3)).Resize(, 5).Sort .[B2], xlAscending Next I End With End Sub
Public Sub hello()
Dim rg As Range, lr As Long
With Sheet1
If .FilterMode Then .ShowAllData
lr = .[B65000].End(xlUp).Row
.[I2] = "=ISNUMBER(MATCH(B2,$G$2:$G$" & .[D65000].End(xlUp).Row & ",0))"
.Range("A1:E" & lr).AdvancedFilter xlFilterInPlace, .[I1:I2]
If .[B65000].End(xlUp).Row > 1 Then Set rg = .Range("A2:E" & lr).SpecialCells(xlCellTypeVisible)
.ShowAllData
.[I2].ClearContents
If Not rg Is Nothing Then rg.Delete xlUp
End With
End Sub