Xoá dòng theo điều kiện ở cột khác (1 người xem)

Liên hệ QC

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

tuan.1985

Thành viên chính thức
Tham gia
25/3/13
Bài viết
77
Được thích
2
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
 

File đính kèm

Dạ vậy e chuyển giá trị cột G sang sheet khác để xoá nguyên dòng đó cũng được ah
 
Upvote 0
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
Thử:
PHP:
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
 
Upvote 0
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
Có thể sử dụng Format conditional kết hợp với fillter, để xóa dữ liệu theo ý bài này
 
Upvote 0
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
 

File đính kèm

Upvote 0
cột G bao lớn?
Nếu không lớn thì nạp nó vào một mảng. Xong đọc cột B, dùng hàm Applcation.Match để dò, và delete.
Nếu siêng thì nạp nó vào 1 cái đit to. Và làm tương tự.
Nếu cột G lớn thì cứ để đó. Nhưng lúc dò cột B thì khoan xoá vội, lập một mảng chứa chỉ sô các dòng cần xoá. Sau đó duyệt mảng và xoá.
 
Upvote 0
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
 
Upvote 0
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

Thử chạy code này cho file bài #1:
PHP:
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
 
Upvote 0
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

A hpkhuong ra tay thì được ngay cái em cần
Bữa giờ anh hỗ trợ em nhiều quá, rất cám ơn anh ah
 
Upvote 0
level của em là cần chạy được thôi a ơi nặng nhẹ tính sau :)
Cám ơn a nhiều ah
 
Upvote 0
Code đại khái. Những thong số thì tự chỉnh.

Sub xoa()
' xoá dữ liệu những dòng có trị nằm trong 1 range
Set ws = Sheets("WorkSheet")
Set rGoc = ws.Range("A1:E200") ' range dữ liệu
Set rLU = ws.Range("G2:G16") ' range lookup để xoá
Application.ScreenUpdating = False
For i = 200 To 2 Step -1
If IsNumeric(Application.Match(rGoc.Cells(i, 2), rLU, 0)) Then rGoc.Rows(i).Delete shift:=xlUp
Next i
Application.ScreenUpdating = True
End Sub

Chú thích: code và giải thuật này tôi viết cho bạn phulien1902
 
Lần chỉnh sửa cuối:
Upvote 0
fan hâm mộ của Advanced Filter cãm thấy ấm ức
Mã:
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
 
Upvote 0
Web KT

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

Back
Top Bottom