Chủ Nhật, 25 tháng 3, 2012

Cộng nhiều ô qua nhiều Sheet


Bạn có thể dùng hàm SUM để có thể cộng nhiều ô qua nhiều Sheet khác nhau .

Ví dụ

=SUM(Sheet1:Sheet10!A1:A100)
Hàm trên cho phép cộng dãy giá trị từ A1 tới A100 trong tất cả các Sheet từ Sheet1 tới Sheet10 . Tuy nhiên điều đó sẽ không linh hoạt khi mà người ta lại dùng các Sheet với những tên khác nhau không theo trình tự .
Để giải quyết việc này chúng ta có thể viết hàm số trong Excel để có thể thực hiện một cách linh hoạt hơn .
  • Mở Excel và file cần làm việc .
  • Bấm tổ hợp phím Alt-F11 để vào cửa sổ Visual Basic , bấm menu Insert , chọn Module .
  • Bạn sao chép nguyên văn nội dung bên dưới
Function SumAllWorksheets(InputRange As Range, InclAWS As Boolean) As Double
Dim ws As Worksheet, TempSum As Double
    Application.Volatile True
    TempSum = 0
    For Each ws In ActiveWorkbook.Worksheets
        If InclAWS Then
            TempSum = TempSum + Application.WorksheetFunction.Sum(ws.Range(InputRange.Address))
        Else
            If ws.Name <> ActiveSheet.Name Then
               TempSum = TempSum + Application.WorksheetFunction.Sum(ws.Range(InputRange.Address))
            End If
        End If
    Next ws
    Set ws = Nothing
    SumAllWorksheets = TempSum
End Function
  • Thay vì đưa ra công thức như =SUM(Sheet1:Sheet10!A1:A100) , bạn có thể đưa công thức  =SumAllWorksheets(A1:A100,0) . Số 0 phía sau A100 có nghĩa là không  tính tới Sheet đang đặt công thức . Nếu tính tới tất cả các Sheet thì có thể đưa ra công thức kiểu như =SumAllWorksheets(A1:D100,1)

Không có nhận xét nào:

Đăng nhận xét