Cách tự động cập nhật báo cáo khi thay đổi thời gian của báo cáo trong Excel - QUẢN TRỊ EXCEL

QUẢN TRỊ EXCEL

Chào mừng các bạn đến với QuanTriExcel.info - Không gì là Không thể... Về thủ thuật Excel, học lập trình VBA, phần mềm chuyên dụng, kế toán, kĩ năng sống ...

Search This Blog

Wednesday, March 25, 2020

Cách tự động cập nhật báo cáo khi thay đổi thời gian của báo cáo trong Excel

Để có thể tự động chạy Macro khi có sự thay đổi trong Sheet, chúng ta cần tìm hiểu về cách thiết lập sự kiện: Worksheet Change Event trong VBA. Với kỹ thuật này chúng ta có thể kiểm soát các câu lệnh VBA để có thể tự động sử dụng khi chúng ta thực hiện một thao tác nào đó trong Sheet, ví dụ như: Tự động cập nhật báo cáo khi thay đổi thời gian của báo cáo, tự động cập nhật nội dung khi Thay đổi dữ liệu tại 1 vị trí… Đây là một kỹ thuật rất hữu ích giúp chúng ta tự động hóa quy trình làm việc của Excel.

PHẦN 2: SỰ KIỆN CHANGE

Tác dụng: Khi có sự thay đổi dữ liệu trong sheet thì sẽ thực hiện câu lệnh trong VBA
Cách làm:
Bước 1: Double Click để chọn Sheet cần áp dụng sự kiện
Bước 2: Chọn mục WorkSheet
Bước 3: Chọn sự kiện trong Worksheet là Change
Sau đây chúng ta cùng tìm hiểu cách ứng dụng sự kiện này trong việc tự động cập nhật báo cáo khi thay đổi thời gian
Dựa vào dữ liệu ở bảng A1:F30, lập bảng báo cáo chi tiết theo thời gian và nhà cung cấp
Cách làm như sau:
Bước 1: Tạo Sub để thực hiện việc lấy dữ liệu vào báo cáo chi tiết
Sub BCCT_Update()
Application.ScreenUpdating = False
'Xoa noi dung cu cua bao cao
Range("H6:K100").ClearContents
'Lenh cap nhat du lieu tu dong
'Tao bo loc tu dong
Range("A2:F2").AutoFilter
'Loc theo cac dieu kien cua bao cao
ActiveSheet.Range("$A$2:$F$47").AutoFilter Field:=2, Criteria1:=Sheet1.Cells(4, 9).Value
ActiveSheet.Range("$A$2:$F$47").AutoFilter Field:=1, _
Criteria1:=">=" & CLng(Sheet1.Cells(2, 9).Value), _
Operator:=xlAnd, _
Criteria2:="<=" & CLng(Sheet1.Cells(3, 9).Value)
'Copy noi dung ket qua bao cao
ActiveSheet.Range("$C$3:$F$47").SpecialCells(xlVisible).Copy
'Luu noi dung vao bao cao chi tiet
Range("H6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Bo che do Copy
Application.CutCopyMode = False
'Bo bo loc tu dong
Range("A2:F2").AutoFilter
Application.ScreenUpdating = True
End Sub
view rawBCCT_Update.bas hosted with ❤ by GitHub
Bước 2: Gán Sub trên vào sự kiện Change trong Sheet1
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("I2:I4"), Range(Target.Address)) Is Nothing Then
Call BCCT_Update
End If
End Sub
Dòng lệnh:
If Not Application.Intersect(Range(“I2:I4”), Range(Target.Address)) Is Nothing Then
được hiểu là: Nếu có sự thay đổi dữ liệu trong vùng từ I2:I4 thì…
=> Khi đó sẽ gọi ra lệnh cập nhật báo cáo chi tiết chính là Macro mà chúng ta đã tạo ở bước 1
Call BCCT_Update
Kết quả: Khi thay đổi bất kỳ dữ kiện thời gian hoặc Nhà cung cấp thì báo cáo chi tiết sẽ tự động được cập nhật.
Tải về file mẫu: http://bit.ly/2F1AD9W
#quantriexcel #kynangmoi

No comments:

Post a Comment

Bạn hãy chia sẻ nhận xét ở đây nhé: