Xin code xóa dữ liệu trong sheet có tên "BA"

Liên hệ QC

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
Web KT
Back
Top Bottom