VBA Xóa dòng theo điều kiện (1 người xem)

Liên hệ QC

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

Bạn nào có thể giúp mình bài này được nhỉ
Xin cảm ơn trước nhé!
PHP:
Sub xoa()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "nuoc"
    Rows("1:1").Select
    Selection.AutoFilter
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$E$14").AutoFilter Field:=1, Criteria1:="Thăm Anh"
    Rows("5:5").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$E$13").AutoFilter Field:=1, Criteria1:=Array( _
        ",,,Vi?tNam,,,,,,,", "Đ?n Vi?t Nam", "M? đ?n Vi?t Nam", "Nư?c Vi?t Nam", _
        "Vi?t Nam và M?"), Operator:=xlFilterValues
    Rows("3:12").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$E$8").AutoFilter Field:=1, Criteria1:="=Nư?c M?", _
        Operator:=xlOr, Criteria2:="=T?ng th?ng M?"
    Rows("2:3").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$E$6").AutoFilter Field:=1
End Sub
 
Upvote 0
Nhờ các bạn GPE giúp code xóa dòng theo điều kiện
Cảm ơn các bạn
Mã:
Sub xoaDong()
  Dim StrArr As Variant
  Dim i As Long, n As Long, eRow As Long, tmp As String
  StrArr = Array("Vi" & ChrW(7879) & "t", "M" & ChrW(7929), "Anh")
  Application.ScreenUpdating = False
  With Sheets("Sheet1")
    eRow = .Range("A" & Rows.Count).End(xlUp).Row
    If eRow < 2 Then Exit Sub
    For i = eRow To 2 Step -1
      tmp = .Range("A" & i).Value
      For n = LBound(StrArr) To UBound(StrArr)
        If InStr(1, tmp, StrArr(n)) > 0 Then
          .Range("A" & i).EntireRow.Delete
          Exit For
        End If
      Next n
    Next i
  End With
  Application.ScreenUpdating = True
End Sub
 
Upvote 0
PHP:
Sub xoa()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "nuoc"
    Rows("1:1").Select
    Selection.AutoFilter
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$E$14").AutoFilter Field:=1, Criteria1:="Thăm Anh"
    Rows("5:5").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$E$13").AutoFilter Field:=1, Criteria1:=Array( _
        ",,,Vi?tNam,,,,,,,", "Đ?n Vi?t Nam", "M? đ?n Vi?t Nam", "Nư?c Vi?t Nam", _
        "Vi?t Nam và M?"), Operator:=xlFilterValues
    Rows("3:12").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$E$8").AutoFilter Field:=1, Criteria1:="=Nư?c M?", _
        Operator:=xlOr, Criteria2:="=T?ng th?ng M?"
    Rows("2:3").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$E$6").AutoFilter Field:=1
End Sub
Cảm ơn bạn!
Ở đây mình yêu cầu là dòng nào có từ "
Nhờ các bạn viết giúp code xóa dòng có 1 trong các từ ("Việt' hoặc "Mỹ" hoặc "Anh")
Thì mới xóa cơ mà bạn.
 
Upvote 0
Upvote 0
Mã:
Sub xoaDong()
  Dim StrArr As Variant
  Dim i As Long, n As Long, eRow As Long, tmp As String
  StrArr = Array("Vi" & ChrW(7879) & "t", "M" & ChrW(7929), "Anh")
  Application.ScreenUpdating = False
  With Sheets("Sheet1")
    eRow = .Range("A" & Rows.Count).End(xlUp).Row
    If eRow < 2 Then Exit Sub
    For i = eRow To 2 Step -1
      tmp = .Range("A" & i).Value
      For n = LBound(StrArr) To UBound(StrArr)
        If InStr(1, tmp, StrArr(n)) > 0 Then
          .Range("A" & i).EntireRow.Delete
          Exit For
        End If
      Next n
    Next i
  End With
  Application.ScreenUpdating = True
End Sub
Em cảm ơn anh @HieuCD
Chuẩn quá rồi anh ơi
Vừa ngắn gon, xúc tích và đúng chủ đề
Em chúc anh mạnh khỏe và luôn luôn vui vẻ hạnh phúc anh nhé.
Bài đã được tự động gộp:

Code Anh Hiếu đáp ứng yêu cầu bạn chưa?
Code của anh @HieuCD là chuận rồi bạn nhé, Cảm ơn tất cả các bạn.
 
Upvote 0
Mã:
Sub xoaDong()
  Dim StrArr As Variant
  Dim i As Long, n As Long, eRow As Long, tmp As String
  StrArr = Array("Vi" & ChrW(7879) & "t", "M" & ChrW(7929), "Anh")
  Application.ScreenUpdating = False
  With Sheets("Sheet1")
    eRow = .Range("A" & Rows.Count).End(xlUp).Row
    If eRow < 2 Then Exit Sub ' ==== ?
    For i = eRow To 2 Step -1
      tmp = .Range("A" & i).Value
      For n = LBound(StrArr) To UBound(StrArr)
        If InStr(1, tmp, StrArr(n)) > 0 Then
          .Range("A" & i).EntireRow.Delete
          Exit For
        End If
      Next n
    Next i
  End With
  Application.ScreenUpdating = True
End Sub
Quan trọng: Code này bị lỗi ở dòng tôi đánh dấu hỏi.
Nếu Exit Sub ở chỗ đó thì cái Application.ScreenUpdating vẫn còn ở tình trạng False, chưa được chỉnh lại.
Thực ra, nếu eRow < 2 thì vòng lặp đã không chạy. Tức là cái lệnh Exit Sub không cần thiết.

Không quan trọng: khi đã biết nếu eRow < 2 thi vòng lặp khong chạy rồi thì biến eRow trưở nên không cần thiết. Bạn có thể dùng:
For i = .Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1

Không quan trọng 2: bài này chỉ có 3 từ. Dùng thẳng toán tử like cho nó gọn, khỏi phải duyệt mảng.
chuoi1 = "*Vi" & ChrW(7879) & "t*": chuoi2 = "*M" & ChrW(7929) & "*": chuoi3 = "*Anh*"
If chuoi Like chuoi1 Or chuoi Like chuoi2 Or chuoi Like chuoi3 Then
- chú: so như vầy phải đi đủ 3 lượt. Dùng array thì chỉ đi trung bình 1,5 lượt. Nhưng ở đây chỉ có 3, điểm khác biệt về tốc độ không nhiều lắm mà code dễ nhìn hơn.
- chú 2: nếu nhiều từ cần tìm thì dùng RegEx hiệu quả hơn.

Không quan trọng 3: có thể phải rắc rối hơn nếu đòi hỏi phải là từ riêng biệt. (Ví dụ ThAnh có chứa Anh)
 
Upvote 0
Quan trọng: Code này bị lỗi ở dòng tôi đánh dấu hỏi.
Nếu Exit Sub ở chỗ đó thì cái Application.ScreenUpdating vẫn còn ở tình trạng False, chưa được chỉnh lại.
Thực ra, nếu eRow < 2 thì vòng lặp đã không chạy. Tức là cái lệnh Exit Sub không cần thiết.

Không quan trọng: khi đã biết nếu eRow < 2 thi vòng lặp khong chạy rồi thì biến eRow trưở nên không cần thiết. Bạn có thể dùng:
For i = .Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1

Không quan trọng 2: bài này chỉ có 3 từ. Dùng thẳng toán tử like cho nó gọn, khỏi phải duyệt mảng.
chuoi1 = "*Vi" & ChrW(7879) & "t*": chuoi2 = "*M" & ChrW(7929) & "*": chuoi3 = "*Anh*"
If chuoi Like chuoi1 Or chuoi Like chuoi2 Or chuoi Like chuoi3 Then
- chú: so như vầy phải đi đủ 3 lượt. Dùng array thì chỉ đi trung bình 1,5 lượt. Nhưng ở đây chỉ có 3, điểm khác biệt về tốc độ không nhiều lắm mà code dễ nhìn hơn.
- chú 2: nếu nhiều từ cần tìm thì dùng RegEx hiệu quả hơn.

Không quan trọng 3: có thể phải rắc rối hơn nếu đòi hỏi phải là từ riêng biệt. (Ví dụ ThAnh có chứa Anh)
Trước giờ cứ nghĩ "For i=2 to 1" code sẽ báo lỗi o_O
 
Upvote 0
Upvote 0
Upvote 0
Cảm ơn anh
ndu96081631
đã quan tâm, Nếu gặp trường hợp này "Đất nước thanh bình" thì để lại anh à
Một điều nữa là trong Code anh @HieuCD có cho thêm mã của bảng ký tự,
Em thấy đôi khi không biết và nhớ số mã của nó thì hơi phức tạm một chút
Vậy nhờ anh ndu96081631 và anh @HieuCD sửa giúp là dùng theo ký tự của Uniky
 
Upvote 0
Cảm ơn anh
ndu96081631
đã quan tâm, Nếu gặp trường hợp này "Đất nước thanh bình" thì để lại anh à
Một điều nữa là trong Code anh @HieuCD có cho thêm mã của bảng ký tự,
Em thấy đôi khi không biết và nhớ số mã của nó thì hơi phức tạm một chút
Vậy nhờ anh ndu96081631 và anh @HieuCD sửa giúp là dùng theo ký tự của Uniky
Cũng có nhiều cách từ đơn giản đến phức tạp để giải quyết yêu cầu của bạn. Vấn đề là tôi đang đoán bài mà bạn đang hỏi chỉ là bài toán con trong bài toán lớn nào đó. Vậy nếu như tôi biết bài toán lớn của bạn là gì, có khi tôi chẳng cần phải xóa dòng, cột gì cả cũng giải quyết xong mọi chuyện
Bạn có thể cho mọi người biết mục đích chính được không?
 
Upvote 0
Cảm ơn anh
ndu96081631
đã quan tâm, Nếu gặp trường hợp này "Đất nước thanh bình" thì để lại anh à
Một điều nữa là trong Code anh @HieuCD có cho thêm mã của bảng ký tự,
Em thấy đôi khi không biết và nhớ số mã của nó thì hơi phức tạm một chút
Vậy nhờ anh ndu96081631 và anh @HieuCD sửa giúp là dùng theo ký tự của Uniky
Nhập các từ vào 1 cột trong sheet, dò theo các từ nầy
 
Upvote 0
Cũng có nhiều cách từ đơn giản đến phức tạp để giải quyết yêu cầu của bạn. Vấn đề là tôi đang đoán bài mà bạn đang hỏi chỉ là bài toán con trong bài toán lớn nào đó. Vậy nếu như tôi biết bài toán lớn của bạn là gì, có khi tôi chẳng cần phải xóa dòng, cột gì cả cũng giải quyết xong mọi chuyện
Bạn có thể cho mọi người biết mục đích chính được không?
Cảm ơn anh
Có phải bài toán lớn nhỏ gì đâu
Em muốn lấy các bình luận trên Facebook, vì vậy em muốn xóa đi các thứ không cần thiết mà chỉ lấy các bình luận trong đó,
Em nghĩ mãi không biết làm cách nào
Anh xem thử file em đính kèm nhé
 

File đính kèm

Upvote 0
Cảm ơn anh
Có phải bài toán lớn nhỏ gì đâu
Em muốn lấy các bình luận trên Facebook, vì vậy em muốn xóa đi các thứ không cần thiết mà chỉ lấy các bình luận trong đó,
Em nghĩ mãi không biết làm cách nào
Anh xem thử file em đính kèm nhé
Đã xem file và thắc mắc:
1> Không biết bạn áp dụng những thứ đã hỏi trong topic này vào file như thế nào?
2> Bạn lấy nội dung facebook này bằng cách nào? Qua facebook copy rồi paste vào Excel?
Liên quan đến việc lấy các comments, sao bạn không tìm trên google những giải pháp tổng quan hơn: export facebook comments into excel
 
Upvote 0
Web KT

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

Back
Top Bottom