vanvan9697
Thành viên chính thức 


			
		- Tham gia
 - 11/5/12
 
- Bài viết
 - 94
 
- Được thích
 - 5
 




Muốn là 1 chuyện có đáng làm không là chuyện khác, trong khi có công cụ tốt rồi - hãy chọn giải pháp nhanh và dễ hiểuDạ em muốn Đoạn sub có thể xóa dòng với điều kiện chỉ cần đánh STT hoặc nhiều dòng có các từ khác chẳng hạn là nó xóa luôn ấy anh ạ.


Dạ vâng. Em cảm ơn anh ạ !.Muốn là 1 chuyện có đáng làm không là chuyện khác, trong khi có công cụ tốt rồi - hãy chọn giải pháp nhanh và dễ hiểu




Thêm điều kiện gì nữa đi làm cho nó bõ 1 cái code.Bạn xem code.Dạ em có 1 file dữ liệu gồm nhiều tiêu đề lặp lại. Em muốn dùng VBa xóa các tiêu đề phát sinh nhiều lần. Anh (chị) giúp đỡ em với ạ !
Sub xoatieude()
Dim arr, arr1
Dim a As Long, lr As Long, i As Long, j As Integer
With Sheet1
    lr = .Range("C" & Rows.Count).End(xlUp).Row
    If lr < 2 Then Exit Sub
    arr = .Range("b2:i" & lr).Value
    ReDim arr1(1 To UBound(arr, 1), 1 To UBound(arr, 2))
    For i = 1 To UBound(arr, 2)
       arr1(1, i) = arr(1, i)
    Next i
    a = 1
    For i = 2 To UBound(arr, 1)
        If UCase(arr(i, 1)) <> "STT" Then
           a = a + 1
           For j = 1 To UBound(arr, 2)
              arr1(a, j) = arr(i, j)
           Next j
       End If
    Next i
    lr = .Range("m" & Rows.Count).End(xlUp).Row
    .Range("M2:T" & lr).ClearContents
    .Range("M2").Resize(a, UBound(arr, 2)).Value = arr1
End With
End Sub
	Bạn thử:Dạ em có 1 file dữ liệu gồm nhiều tiêu đề lặp lại. Em muốn dùng VBa xóa các tiêu đề phát sinh nhiều lần. Anh (chị) giúp đỡ em với ạ !
Sub Copy_STT()
    Dim LR As Long
    Application.ScreenUpdating = False
    With Sheet1
        LR = .Range("B" & Rows.Count).End(xlUp).Row
        .Range("B2").AutoFilter 1, "<>STT"
        .Range("B3:I" & LR).SpecialCells(xlVisible).Copy Range("M3")
        .Range("B2").AutoFilter
    End With
    Application.ScreenUpdating = True
End Sub
	
Sub XoaTieuDe()
    Dim Dong As Long, k As Long
    With Sheet1
        Dong = .[B65000].End(3).Row
        For k = 3 To Dong
            If UCase(.Cells(k, 2)) Like "STT*" Then .Cells(k, 2).EntireRow.Delete
        Next
    End With
End Sub
	Nếu dùng Range, hay Cells khi xóa dòng như thế thì nên dùng For ngược (Step=-1)Bạn thử đoạn sub này ngắn gọn xem. Nếu thêm nữa thì lại thêm điều kiện
Mã:Sub XoaTieuDe() Dim Dong As Long, k As Long With Sheet1 Dong = .[B65000].End(3).Row For k = 3 To Dong If UCase(.Cells(k, 2)) Like "STT*" Then .Cells(k, 2).EntireRow.Delete Next End With End Sub


Như snow25 nói trên, hãy thử kiểm tra, code của bạn chỉ đúng với số liệu ví dụ hiện thờiXóa được đúng cho nội dung anh ạ