Cần giúp đỡ tự động xóa dòng khi ô thuộc dòng đó không có chứa ký tự "Total" (3 người xem)

Liên hệ QC

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

hung2412

Thành viên tích cực
Tham gia
5/8/08
Bài viết
929
Được thích
240
Giới tính
Nam
Chào quý vị và các bạn GPE!
Nhờ quý vị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
T
ự động xóa dòng khi ô ở cột B thuộc dòng đó không có chứa ký tự "Total" (Ngoại trừ 3 dòng cuối). Dữ liệu các dòng không cố định.
Ví dụ:
- Xóa dòng 12 vì ô B12 không có chứa ký tự "Total".
- Không xóa dòng 172, 173, 174 vì 3 dòng này thuộc 3 dòng cuối.
Mong quý vị và các bạn chỉ giáo.
Trân trọng cảm ơn!
P/s: Có file đính kèm.
 

File đính kèm

Chào quý vị và các bạn GPE!
Nhờ quý vị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
T
ự động xóa dòng khi ô ở cột B thuộc dòng đó không có chứa ký tự "Total" (Ngoại trừ 3 dòng cuối). Dữ liệu các dòng không cố định.
Ví dụ:
- Xóa dòng 12 vì ô B12 không có chứa ký tự "Total".
- Không xóa dòng 172, 173, 174 vì 3 dòng này thuộc 3 dòng cuối.
Mong quý vị và các bạn chỉ giáo.
Trân trọng cảm ơn!
P/s: Có file đính kèm.

AutoFilter rồi xóa bình thường thôi
AutoFilter --> Custom: does not contain = "Total"
 
AutoFilter rồi xóa bình thường thôi
AutoFilter --> Custom: does not contain = "Total"
Em hỏi thêm bài này chút, Em làm bằng Code
Mã:
Sub XoaToTal()
Dim R As Long, I As Long
With Sheet5
    R = .[B65000].End(3).Row
    For I = R To 10 Step -1
    If .Cells(I, 2) = "[COLOR=#ff0000]*[/COLOR]Total[COLOR=#ff0000]*[/COLOR]" Then .Cells(I, 2).EntireRow.Delete
Next I
End With
End Sub
Dấu * để thay cho bất kỳ nội dung nào, code không chạy, mong anh chỉ dậy thêm
 
Em hỏi thêm bài này chút, Em làm bằng Code
Mã:
Sub XoaToTal()
Dim R As Long, I As Long
With Sheet5
    R = .[B65000].End(3).Row
    For I = R To 10 Step -1
    If .Cells(I, 2) = "[COLOR=#ff0000]*[/COLOR]Total[COLOR=#ff0000]*[/COLOR]" Then .Cells(I, 2).EntireRow.Delete
Next I
End With
End Sub
Dấu * để thay cho bất kỳ nội dung nào, code không chạy, mong anh chỉ dậy thêm
Dùng hàm InStr (tương tự hàm FIND trên bảng tính) để tim hoặc dùng toán tử LIKE để so sánh. Không so sánh = kiểu đó được
Ví dụ:
Mã:
If InStr(1, .Cells(I, 2).Value, "total", vbTextCompare) > 0 then
hoặc
Mã:
If UCase(.Cells(I, 2).Value) Like "*TOTAL*" then
 
Dùng hàm InStr (tương tự hàm FIND trên bảng tính) để tim hoặc dùng toán tử LIKE để so sánh. Không so sánh = kiểu đó được
Ví dụ:
Mã:
If InStr(1, .Cells(I, 2).Value, "total", vbTextCompare) > 0 then
hoặc
Mã:
If UCase(.Cells(I, 2).Value) Like "*TOTAL*" then
Quá hay ạ, Em cảm ơn!
Dấu = dùng trong trường hợp ô đó có giá trị số?
 
Quá hay ạ, Em cảm ơn!
Dấu = dùng trong trường hợp ô đó có giá trị số?

Không hẳn vậy! So sánh = vẫn dùng được với Text. khi 2 cell thật sự giống nhau hoàn toàn thì kết quả sẽ =TRUE và ngược lại
Lưu ý rằng "a" sẽ không = "A" (khác với trên bảng tính)
Tóm lại: so sánh bằng dùng với số hay chuỗi đều được, miễn chúng thật sự giống nhau là OK
 
Gửi chủ Topic Code để tham khảo thêm
Mã:
Sub XoaToTal()Dim R As Long, I As Long
With Sheet5
    R = .[B65000].End(3).Row
    For I = R To 10 Step -1
    If UCase(.Cells(I, 2).Value) Like "*TOTAL*" Then .Cells(I, 2).EntireRow.Delete
Next I
End With
End Sub
Mở file -> Click nút Xoa -> các dòng có Total sẽ "bay" hết
 

File đính kèm

Gửi chủ Topic Code để tham khảo thêm
Mã:
Sub XoaToTal()Dim R As Long, I As Long
With Sheet5
    R = .[B65000].End(3).Row
    For I = R To 10 Step -1
    If UCase(.Cells(I, 2).Value) Like "*TOTAL*" Then .Cells(I, 2).EntireRow.Delete
Next I
End With
End Sub
Mở file -> Click nút Xoa -> các dòng có Total sẽ "bay" hết
Xin đa tạ, nhưng đây là topic xóa các dòng không có "Total" cơ mà.
 
Xin đa tạ, nhưng đây là topic xóa các dòng không có "Total" cơ mà.
Vậy cũng đơn giản thôi.
Mở file, ấn tổ hợp ALT + F11, của sổ vba mở ra, bạn click vào module1, sửa code của bạn Huy Vũ thành
...
If not Ucase(.Cells(I,2).......
Chúc bạn thành công!
 
Vậy cũng đơn giản thôi.
Mở file, ấn tổ hợp ALT + F11, của sổ vba mở ra, bạn click vào module1, sửa code của bạn Huy Vũ thành
...
If not Ucase(.Cells(I,2).......
Chúc bạn thành công!
Vâng. Xin đa tạ. Giả sử bây giờ đã xóa hết các dòng không có "Total" => Chỉ còn lại những dòng có "Total" => Muốn xóa chữ "Total" thì phải làm sao ạ?
 
Bạn muốn dùng code hay thủ công.
Thủ công thì ngoài bảng tính, Ctrl + F, find what nhập total, replace bỏ trống, replace all, thế là total đi đời
 
Vâng. Xin đa tạ. Giả sử bây giờ đã xóa hết các dòng không có "Total" => Chỉ còn lại những dòng có "Total" => Muốn xóa chữ "Total" thì phải làm sao ạ?
Gom 2 cái Giả sử thành 1 luôn đi
PHP:
Public Sub GiaSuSuGia()
Application.ScreenUpdating = False
Dim R As Long, I As Long
R = Range("B65536").End(xlUp).Row
For I = R To 8 Step -1
    If InStr(UCase(Cells(I, 2)), "TOTAL") = 0 Then
        Cells(I, 2).EntireRow.Delete
    Else
        Cells(I, 2).Value = Replace(UCase(Cells(I, 2)), "TOTAL", "")
    End If
Next I
End Sub
 
Xin đa tạ chư vị cao thủ, mỗi người một comment hướng dẫn, cứ như là phân công lao động vậy, hay thiệt.
 
Xin đa tạ chư vị cao thủ, mỗi người một comment hướng dẫn, cứ như là phân công lao động vậy, hay thiệt.

Lưu ý quan trọng:
- Sau khi xóa xong các dòng không chứa chuỗi "Total", những cell còn lại bạn cũng xóa luôn chuỗi "Total"
- Vậy có nghĩa là nếu chạy code lần thứ 2 thì toàn bộ dữ liệu của bạn sẽ bị xóa sạch (vì lúc này không còn chỗ nào tồn tại chuỗi "Total" nữa cả)
Cái chuyện bấm nút chạy code xong lại bấm tiếp để chạy code lần nữa là chuyện thường (có khi là sơ ý)
Vậy bạn đã từng nghĩ qua trường hợp tồi tệ này chưa?
 
Xin đa tạ chư vị cao thủ, mỗi người một comment hướng dẫn, cứ như là phân công lao động vậy, hay thiệt.
Không cần câu chữ khách sáo quá đâu bạn, mng trên gpe với tinh thần chia sẻ là chính mà, nhấn nút cảm ơn là đủ, hì
 
Lưu ý quan trọng:
- Sau khi xóa xong các dòng không chứa chuỗi "Total", những cell còn lại bạn cũng xóa luôn chuỗi "Total"
- Vậy có nghĩa là nếu chạy code lần thứ 2 thì toàn bộ dữ liệu của bạn sẽ bị xóa sạch (vì lúc này không còn chỗ nào tồn tại chuỗi "Total" nữa cả)
Cái chuyện bấm nút chạy code xong lại bấm tiếp để chạy code lần nữa là chuyện thường (có khi là sơ ý)
Vậy bạn đã từng nghĩ qua trường hợp tồi tệ này chưa?
Chắc là đã có dự trù trước rồi
Tự động xóa dòng khi ô ở cột B thuộc dòng đó không có chứa ký tự "Total" (Ngoại trừ 3 dòng cuối). Dữ liệu các dòng không cố định.
Ví dụ:
- Xóa dòng 12 vì ô B12 không có chứa ký tự "Total".
- Không xóa dòng 172, 173, 174 vì 3 dòng này thuộc 3 dòng cuối.
Chỉ cần còn 3 dòng cuối là đủ "báo..." rồi.
Hì...
 
Web KT

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

Trả lời
42
Đọc
17K
Back
Top Bottom