Mình tạo được 1 File tự động xuất Báo Cáo theo điều kiện lọc bằng cách tạo ra các sheet mới và đặt tên theo điều kiện lọc.
Lần 1: Khi xuất báo cáo lần 1 sẽ tạo ra các sheet mới và đặt tên theo điều kiện
Nhưng giả sử mình muốn xuất lại Báo cáo vì dữ liệu thay đổi thì phải xuất lại Lần 2
Nhưng mà sheet mới đã có tên rồi nên khi xuất lại Báo Cáo nó không tạo được sheet mới vì trùng tên, nhờ mọi người chỉ mình hướng khắc phục bằng cách xóa sheet trùng tên và tạo lại
Ý tưởng của mình là:
Trước khi xuất báo cáo, tìm xem có sheet nào đã có tên theo điều kiện lọc chưa
Nếu có thì xóa hết đi rồi mới làm báo cáo
Lần 1: Khi xuất báo cáo lần 1 sẽ tạo ra các sheet mới và đặt tên theo điều kiện
Nhưng giả sử mình muốn xuất lại Báo cáo vì dữ liệu thay đổi thì phải xuất lại Lần 2
Nhưng mà sheet mới đã có tên rồi nên khi xuất lại Báo Cáo nó không tạo được sheet mới vì trùng tên, nhờ mọi người chỉ mình hướng khắc phục bằng cách xóa sheet trùng tên và tạo lại
Ý tưởng của mình là:
Trước khi xuất báo cáo, tìm xem có sheet nào đã có tên theo điều kiện lọc chưa
Nếu có thì xóa hết đi rồi mới làm báo cáo
Mã:
Sub BaoCao()
Dim DKLoc As Range 'Khai bao Vung du lieu chua DIEU KIEN de loc du lieu
'Dim VungDL_Loc As Range 'Khai bao Vung de loc du lieu
Dim lr As Long 'Bien dong cuoi cua Vung Du Lieu can Loc
lr = Sheet1.Cells(Rows.Count, 1).End(3).Row
Dim lrDK As Integer 'Bien dong cuoi cua Vung DK loc (cot H la cot 8)
lrDK = Sheet1.Cells(Rows.Count, 8).End(3).Row
' Gan vung chua DK loc tu cot H2 den cot H chua dong cuoi
Set DKLoc = Sheet1.Range("H2:H" & lrDK)
'Set VungDL_Loc = Sheet1.Range("A1:B" & lr)
For Each DKLoc In DKLoc
With Sheet1
'Tat AutoFile trong sheet1 truoc da
.AutoFilterMode = False
' Loc vung Du Lieu can tinh toan
.Range("A1:B" & lr).AutoFilter
' Loc du lieu tai cot 1, dieu kien la gia tri cua vung chua DKLoc
.Range("A1:B" & lr).AutoFilter Field:=1, Criteria1:=DKLoc.Value
'Copy du lieu sau khi loc
.Range("A1:B" & lr).Parent.AutoFilter.Range.Copy
End With
'Tao 1 sheet moi sau sheet cuoi
Sheets.Add after:=Sheets(Sheets.Count)
'Dat ten cho sheet moi tao
Sheets(Sheets.Count).Name = DKLoc.Value
'Paste du lieu BAO CAO sang sheet moi tao
Sheets(Sheets.Count).Range("a1").PasteSpecial xlPasteValues
Next DKLoc
' Khong loc du lieu nua
Sheet1.AutoFilterMode = False
' Quay ve sheet DATA
Sheet1.Select
MsgBox "Da xuat xong tat ca cac bao cao"
End Sub
File đính kèm
Lần chỉnh sửa cuối: