Trong bài viết này, chúng tôi sẽ tạo một hàm tùy chỉnh để tính tổng các giá trị trong phạm vi các trang tính khác nhau.

Chúng tôi sẽ tạo ba hàm tùy chỉnh khác nhau sẽ tính toán tổng giá trị trong phạm vi của các trang tính khác, dựa trên tên trang tính, số trang tính và tham chiếu trang tính từ trang tính đang hoạt động.

Dữ liệu thô cho ví dụ này bao gồm bốn trang tính. Mỗi tờ có thông tin chi tiết về số lượng mặt hàng được bán bởi mỗi thành viên trong nhóm trong phạm vi B7 đến B16 cho một ngày cụ thể. Chúng tôi đã lấy dữ liệu cho ngày 1 ^ thứ ^, 2 ^ nd ^, 3 ^ rd ^ và ngày cuối cùng của tháng.

ArrowFirstDay

Giải thích logic

Trong ví dụ này, chúng tôi đã tạo ba hàm tùy chỉnh đó là: -. SumBySheetName. SumBySheetNumber. SumByOffsetSheetNumber. SumBySheetName: – Hàm tùy chỉnh này lấy phạm vi và tên trang tính làm tham số đầu vào. Nó trả về tổng các giá trị trong phạm vi xác định của tên trang tính đã xác định.

  1. SumBySheetNumber: – Hàm tùy chỉnh này lấy phạm vi và số trang làm tham số đầu vào. Nó trả về tổng các giá trị trong phạm vi xác định cho số trang đã xác định.

  1. SumByOffsetSheetNumber: – Hàm này lấy phạm vi và độ lệch từ trang tính hoạt động làm tham số đầu vào. Nó trả về tổng các giá trị trong phạm vi xác định của trang tính được xác định bởi chỉ số bù đắp.

Mỗi trang tính trong sổ làm việc hiển thị tổng số mặt hàng đã bán vào ngày đầu tiên, ngày hôm trước, ngày hiện tại, ngày tiếp theo và ngày cuối cùng.

Nếu bạn xem kỹ chức năng tùy chỉnh, bạn sẽ thấy rằng tất cả bốn trang tính đều sử dụng cùng một chức năng tùy chỉnh với các thông số giống nhau.

Hàm tùy chỉnh “SumBySheetNumber” được sử dụng để tính toán tổng số mặt hàng đã bán vào ngày đầu tiên, vì trang tính đầu tiên sẽ luôn chứa dữ liệu của ngày đầu tiên trong tháng.

Hàm tùy chỉnh “SumByOffsetSheetNumber” được sử dụng để tính toán tổng số mặt hàng đã bán vào ngày hôm trước, hiện tại và ngày hôm sau khi các trang tính trong sổ làm việc được sắp xếp theo trình tự ngày.

Hàm tùy chỉnh “SumBySheetName” được sử dụng để tính tổng số mặt hàng đã bán vào ngày cuối cùng của tháng, vì tên trang tính của ngày cuối cùng sẽ luôn là “LastDayOfMonth”.

ArrowSecondDay

ArrowThirdDay

ArrowLastDay

Giải thích mã

Đối tượng WorksheetFunction.Sum WorksheetFunction được sử dụng để truy cập các chức năng trang tính Excel từ Visual Basic. Chúng tôi đã sử dụng hàm SUM của trang tính Excel để thêm các giá trị trong phạm vi.

InputRange.Address Đoạn mã trên được sử dụng để trả về địa chỉ của phạm vi được chỉ định bởi đối tượng phạm vi “InputRange”.

Vui lòng theo dõi bên dưới để biết mã

Option Explicit

Function SumBySheetName(InputRange As Range, Optional SheetName As Variant)

'Declaring variable

Dim SheetIn As Worksheet

'Checking whether value is assigned to optional parameter

'IF optional parameter is missing then generate sum for range in the active sheet

If IsMissing(SheetName) Then

SumBySheetName = WorksheetFunction.Sum(InputRange)

Exit Function

End If

'Looping through sheets in the worksheets collection

For Each SheetIn In Worksheets

'Checking whether specified sheet exist in the worksheets collection

If SheetName = SheetIn.Name Then

'Calculating the sum for specified range of the specified sheet

SumBySheetName = WorksheetFunction.Sum(Worksheets(SheetName).Range(InputRange.Address))

Exit Function

End If

Next

SumBySheetName = "Specified Sheet doesn't exist in the workbook"

End Function

Function SumBySheetNumber(InputRange As Range, Optional SheetIndex As Integer = 0)

'Checking whether optional parameter is missing or sheet index is assigned zero value

If SheetIndex = 0 Then

SumBySheetNumber = WorksheetFunction.Sum(InputRange)

'Checking whether sheet index is greater than number of sheets in the workbook

ElseIf SheetIndex > Sheets.Count Then

SumBySheetNumber = "Sheet Index is greater than number of sheets in the workbook"

Else

SumBySheetNumber = WorksheetFunction.Sum(Worksheets(SheetIndex).Range(InputRange.Address))

End If

End Function

Function SumByOffsetSheetNumber(InputRange As Range, Optional SheetOffset As Integer = 0)

'Error Handling

On Error GoTo Last

'Calculating sum

SumByOffsetSheetNumber = WorksheetFunction.Sum(Worksheets(InputRange.Worksheet.Index + _

SheetOffset).Range(InputRange.Address))

Exit Function

Last:

SumByOffsetSheetNumber = "Referred Sheet not exists"

End Function

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]