Thông thường, một tình huống phát sinh khi chúng ta cần tổng hợp (tích lũy) một số giá trị được nhập tuần tự vào một ô:
Những thứ kia. Ví dụ: nếu bạn nhập số 1 vào ô A5, thì số 1 sẽ xuất hiện trong B15. Nếu sau đó bạn nhập số 1 vào A7, thì số 1 sẽ xuất hiện trong ô B22, v.v. Nói chung, những gì mà kế toán (và không chỉ họ) gọi là tổng lũy kế.
Bạn có thể triển khai một bộ tích lũy ô lưu trữ như vậy bằng cách sử dụng một macro đơn giản. Nhấp chuột phải vào tab trang tính nơi đặt các ô A1 và B1 và chọn từ trình đơn ngữ cảnh Văn bản nguồn (Mã nguồn). Trong cửa sổ trình soạn thảo Visual Basic mở ra, sao chép và dán mã macro đơn giản:
Private Sub Worksheet_Change (ByVal Target As Excel.Range) Với Target If .Address (False, False) = "A1" Then If IsNumeric (.Value) Then Application.EnableEvents = False Range ("A2"). Value = Range (" A2 "). Value + .Value Application.EnableEvents = True End If End If End With End Sub
Tất nhiên, địa chỉ của ô A1 và A2 có thể được thay thế bằng địa chỉ của bạn.
Nếu bạn cần theo dõi mục nhập dữ liệu và tóm tắt không phải từng ô riêng lẻ, mà là toàn bộ phạm vi, thì macro sẽ phải được thay đổi một chút:
Private Sub Worksheet_Change (ByVal Target As Excel.Range) If Not Intersect (Target, Range ("A1: A10")) Không có gì thì If IsNumeric (Target.Value) Then Application.EnableEvents = False Target.Offset (0, 1) .Value = Target.Offset (0, 1) .Value + Target.Value Application.EnableEvents = True End If End If End Sub
Giả sử rằng dữ liệu được nhập vào các ô của phạm vi A1: A10 và các số đã nhập được tổng hợp trong cột liền kề ở bên phải. Nếu trong trường hợp của bạn, nó không liền nhau, thì hãy tăng dịch chuyển sang phải trong toán tử Offset - thay thế 1 bằng một số lớn hơn.
- Macro là gì, chèn mã macro ở đâu trong VBA, cách sử dụng chúng?