Xin code xóa dữ liệu trong sheet có tên "BA" (1 người xem)

Liên hệ QC

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

Hoang_Thuyet

Thành viên mới
Tham gia
21/12/18
Bài viết
4
Được thích
0
Mình có 1 bài toán cần cả nhà giúp.
Trong 1 sheet có tên "BA" chỉ xóa dữ liệu ở sheet này , vùng cần xóa dữ liệu bắt đầu từ A10 đến Wxx trong đó xx là dòng cuối cùng của cột A có chứa dữ liệu, tức là cột từ A10 đến A100 có dữ liệu thì xóa dữ liệu vùng A10:W100 . Xin cảm ơn
 
Bạn thử xem sao:
PHP:
Sub XoaVungDLTheoDongCuoiCotATrenTrang_BA()
 Dim Sh As Worksheet:                           Dim Rws As Long
 
 For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = "BA" Then
        Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
        Sh.Range("A10: W" & Rws).ClearContents
        Exit For
    End If
 Next Sh
End Sub
 
Upvote 0
Bạn thử xem sao:
PHP:
Sub XoaVungDLTheoDongCuoiCotATrenTrang_BA()
Dim Sh As Worksheet:                           Dim Rws As Long

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = "BA" Then
        Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
        Sh.Range("A10: W" & Rws).ClearContents
        Exit For
    End If
Next Sh
End Sub
Biết tên sheet rồi thì sao lại dùng FOR nhỉ.

Ngoài ra code không chuẩn:
1. Dòng
Mã:
Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
sẽ có lỗi nếu ô cuối cùng của cột A là text. Vì sao? Vì thuộc tính mặc định của Range không là ROW mà là VALUE. Viết thế đồng nghĩa với Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Value. Khi ô cuối là text thì dĩ nhiên Rws = text sẽ gây lỗi.

2. Nếu chỉ có vd. A1 <> rỗng, hoặc A1 = rỗng còn A2:Acuối cùng = rỗng thì code sẽ xóa toàn bộ dữ liệu quan trọng tại B1:W9 nếu có. Mà dụng ý là không xóa gì ở những dòng 1:9
 
Lần chỉnh sửa cuối:
Upvote 0
Cho nó có vẻ bài bản í mà!

Chúc vui nhân dịp xuân về!
 
Upvote 0
Bạn thử xem sao:
PHP:
Sub XoaVungDLTheoDongCuoiCotATrenTrang_BA()
Dim Sh As Worksheet:                           Dim Rws As Long

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = "BA" Then
        Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
        Sh.Range("A10: W" & Rws).ClearContents
        Exit For
    End If
Next Sh
End Sub
Thank bác em đã làm đc ạ
 
Upvote 0
Bác giúp em viết cái vba sử dụng như hàm CONCATENATE với ạ.
Sau khi em input tự động thì ở cột X sẽ là :
X1=A1 concatenate F1
Tương tự chạy đến Xn=An concatenate Fn
Với n là dòng cuối có dữ liệu cột A
 
Upvote 0
Bác giúp em viết cái vba sử dụng như hàm CONCATENATE với ạ.
Sau khi em input tự động thì ở cột X sẽ là :
X1=A1 concatenate F1
Tương tự chạy đến Xn=An concatenate Fn
Với n là dòng cuối có dữ liệu cột A
Nếu chỉ đơn giản như vậy sao bạn không dùng công thức:
PHP:
X1=A1&F1
Enter, Fill xuống.
 
Upvote 0
Mình có 1 bài toán cần cả nhà giúp.
Trong 1 sheet có tên "BA" chỉ xóa dữ liệu ở sheet này , vùng cần xóa dữ liệu bắt đầu từ A10 đến Wxx trong đó xx là dòng cuối cùng của cột A có chứa dữ liệu, tức là cột từ A10 đến A100 có dữ liệu thì xóa dữ liệu vùng A10:W100 . Xin cảm ơn
Thử code sau (chừa lại tiêu đề dòng 9).
Mã:
Sub Xoa()
    Sheets("BA").Range("A9").CurrentRegion.Offset(1).ClearContents
End Sub
 
Upvote 0
Khi số dòng tăng thì kết quả nhận được vẫn là A1&F1 đấy.
Khi số dòng tăng thì kết quả nhận được vẫn là A1&F1 đấy.
Cái này tôi nhầm vì cột F chưa có đủ dữ liệu để xác định số dòng, sửa lại thế này mới đúng:
PHP:
Range("A1",Range("A1").end(xldown)).offset(,23).Formula="=A1&F1"
Bạn chạy thử sẽ thấy không sai.
 
Upvote 0
Thử code sau (chừa lại tiêu đề dòng 9).
Mã:
Sub Xoa()
    Sheets("BA").Range("A9").CurrentRegion.Offset(1).ClearContents
End Sub
Em xin phép, code anh be09 đang viết dùng " .CurrentRegion " nghĩa là vùng hiện tại. Cái này chưa đủ vì nếu vùng dữ liệu cột A10 đến Wxx mà không liên tục (có blank ở giữa các cột, các dòng) thì code sẽ bỏ qua luôn không xóa kể từ cái blank ấy.
Ngoài ra nếu tiêu đề dòng 9 mà có dữ liệu liên tục đến ra ngoài cột W ( ví dụ là A9:AA9 ) thì nó sẽ xóa đến hết cột AA luôn.
Anh/Chị thử:
Mã:
Sub DDEL()
On Error GoTo a
    ThisWorkbook.Sheets("BA").Range("A10:W" & Sheets("BA").Range("A" & Rows.Count).End(xlUp).Row).ClearContents
a:
    MsgBox ("Khong co sheet BA")
End Sub
 
Upvote 0
Em xin phép, code anh be09 đang viết dùng " .CurrentRegion " nghĩa là vùng hiện tại. Cái này chưa đủ vì nếu vùng dữ liệu cột A10 đến Wxx mà không liên tục (có blank ở giữa các cột, các dòng) thì code sẽ bỏ qua luôn không xóa kể từ cái blank ấy.
Ngoài ra nếu tiêu đề dòng 9 mà có dữ liệu liên tục đến ra ngoài cột W ( ví dụ là A9:AA9 ) thì nó sẽ xóa đến hết cột AA luôn.
Anh/Chị thử:
Mã:
Sub DDEL()
On Error GoTo a
    ThisWorkbook.Sheets("BA").Range("A10:W" & Sheets("BA").Range("A" & Rows.Count).End(xlUp).Row).ClearContents
a:
    MsgBox ("Khong co sheet BA")
End Sub
Chủ Topic không có File nên không biết dữ liệu trên dòng tiêu đề nó là cái gì? Vậy dùng thử cái này:
Mã:
Sub Xoa()
    Sheets("BA").UsedRange.Offset(10).ClearContents
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Chủ Topic không có File nên không biết dữ liệu trên dòng tiêu đề nó là cái gì? Vậy dùng thử cái này:
Mã:
Sub Xoa()
    Sheets("BA").UsedRange.Offset(10).ClearContents
End Sub
Nếu vậy thì UsedRange vượt quá cột W thì nó cũng sẽ xóa đúng không ạ ? chủ thớt có nêu rõ chỉ xóa trong vùng A10:W chứ dữ lieu ngoài W sẽ không xóa
 
Upvote 0
Upvote 0
Bài 1 nêu xóa dữ liệu vùng A10:W100, vậy thì chơi thẳng cục này vô (A10:W100) là xong.
Người ta viết thế thì nên hiểu là các cột là bất di bất dịch vì thường trong thực tế ta có bảng với số cột, cấu trúc cột không đổi. Cái thay đổi là số dòng dữ liệu. Vì thế nên hiểu A:W là phạm vi cột cố định, nhưng số dòng sẽ thay đổi (thực tế cuộc sống nó thế). Người ta viết 100 nhưng nên hiểu đấy chỉ là con số ví dụ. Theo lôgíc thì xóa dữ liệu cũ. 100 có thể là nhiều lúc này nhưng quá ít khi khác.

Mà xác định dòng cuối có khó gì đâu, code cũng chạy vèo, sao lại phải tiết kiệm 1 dòng xác định.

Còn cứ khăng khăng rằng người ta muốn xóa chính xác chỉ vùng A10:W100 thì cũng chịu, khó ai tranh luận được.
 
Upvote 0

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

Back
Top Bottom