hiénlinh197
Thành viên tiêu biểu

- Tham gia
- 26/5/09
- Bài viết
- 491
- Được thích
- 113
Bạn nào có thể giúp mình bài này được nhỉ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
Bạn nào có thể giúp mình bài này được nhỉ
Xin cảm ơn trước nhé!
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
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
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
Cảm ơn bạn!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
Code Anh Hiếu đáp ứng yêu cầu bạn chưa?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.
Em cảm ơn anh @HieuCDMã: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
Code của anh @HieuCD là chuận rồi bạn nhé, Cảm ơn tất cả các bạn.Code Anh Hiếu đáp ứng yêu cầu bạn chưa?
Quan trọng: Code này bị lỗi ở dòng tôi đánh dấu hỏi.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
Trước giờ cứ nghĩ "For i=2 to 1" code sẽ báo lỗiQuan 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)
Trong file bạn có nói: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
Nếu gặp cell có chứa câu "Đất nước thanh bình" thì để lại hay múc luôn'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")
Chắc là múc luôn Thầy ơi! Chờ chủ thớt lên tiếng. Chắc là tìm từ Anh trong chuỗi Thầy vừa nói.Trong file bạn có nói:
Nếu gặp cell có chứa câu "Đất nước thanh bình" thì để lại hay múc luôn
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ệnCả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ầyCả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ảm ơn anhCũ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?
Đã xem file và thắc mắc: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é