이 기사에서는 서로 다른 시트 범위의 값 합계를 계산하는 사용자 지정 함수를 만듭니다.

활성 시트의 시트 이름, 시트 번호 및 시트 참조를 기반으로 다른 시트 범위의 값 합계를 계산하는 세 가지 다른 사용자 지정 함수를 생성합니다.

이 예의 원시 데이터는 4 개의 시트로 구성됩니다. 특정 날짜 동안 B7에서 B16 범위의 각 팀원이 판매 한 품목 수에 대한 세부 정보가있는 각 시트. 우리는 1 ^ st ^ 일, 2 ^ nd ^, 3 ^ rd ^ 및 그 달의 마지막 날에 대한 데이터를 가져 왔습니다.

ArrowFirstDay

논리 설명

이 예에서는 다음과 같은 세 가지 사용자 지정 함수를 만들었습니다.-. SumBySheetName. SumBySheetNumber. SumByOffsetSheetNumber. SumBySheetName :-이 사용자 정의 함수는 범위 및 시트 이름을 입력 매개 변수로 사용합니다. 정의 된 시트 이름의 정의 된 범위에있는 값의 합계를 반환합니다.

  1. SumBySheetNumber :-이 사용자 정의 함수는 범위와 시트 번호를 입력 매개 변수로 사용합니다. 정의 된 시트 번호에 대해 정의 된 범위에있는 값의 합계를 반환합니다.

  1. SumByOffsetSheetNumber :-이 함수는 활성 시트의 범위와 오프셋을 입력 매개 변수로 사용합니다. 오프셋 인덱스로 정의 된 시트의 정의 된 범위에있는 값의 합계를 반환합니다.

통합 문서의 각 시트에는 첫날, 전날, 오늘, 다음 날 및 마지막 날에 판매 된 총 항목이 표시됩니다.

사용자 지정 함수를 자세히 살펴보면 4 개의 시트가 모두 동일한 매개 변수로 동일한 사용자 지정 함수를 사용한다는 것을 알 수 있습니다.

“SumBySheetNumber”사용자 지정 함수는 첫 번째 시트에 항상 매월 1 일의 데이터가 포함되므로 첫날 판매 된 총 항목을 계산하는 데 사용됩니다.

“SumByOffsetSheetNumber”사용자 지정 함수는 통합 문서의 시트가 날짜 순서로 정렬되므로 이전, 현재 및 다음 날에 판매 된 총 항목을 계산하는 데 사용됩니다.

“SumBySheetName”사용자 지정 함수는 마지막 날의 시트 이름이 항상 “LastDayOfMonth”가되기 때문에 해당 월의 마지막 날에 판매 된 총 항목을 계산하는 데 사용됩니다.

ArrowSecondDay

ArrowThirdDay

ArrowLastDay

코드 설명

WorksheetFunction.Sum WorksheetFunction 개체는 Visual Basic에서 Excel 시트 함수에 액세스하는 데 사용됩니다. 범위의 값을 추가하기 위해 Excel 시트의 SUM 함수를 사용했습니다.

InputRange.Address 위 코드는“InputRange”범위 객체에 의해 지정된 범위의 주소를 반환하는 데 사용됩니다.

아래 코드를 따르세요

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

이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.

여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요