다음을 통해 공유

[VBA 사용자지정 함수] 피벗데이터에서 특정 조건을 만족하는 행의 특정 데이터(숫자) 합계를 구하는 함수

익명
2023-09-01T07:31:39+00:00

안녕하세요 아래와 같이 인수로 특정 연도와 분류를 입력하면 동일한 연도, 분류에 해당하는 예산 값들을 모두 더하여 출력하는 vba 사용자지정 함수를 만들려고 하는데 #name 오류가 반환되어 어떤 부분이 문제인지 알고자 질문드립니다.

  1. (시트1) 피벗데이터 ㅇ 시트명 : DB ㅇ 피벗테이블(이름 : DB_Content) 구성
    • 1열 : 연도
    • 2열 : 분류
    • 3열 : 예산
  2. 함수 코드

Function test(year as long, category as string) as double

Dim DB as PivotTable

Set DB = ThisWorkbook.Sheets("DB").PivotTables("DB_Content")

Dim lastRowDB As Long

Dim YearCol As Long, CatCol As Long

lastRowDB = DB.ListRows.Count

Dim YearCol As Long, CatCol As Long, BudgetCol As Long

Dim BudgetSum As Double

YearCol = 1

CatCol = 2

BudgetCol = 3

BudgetSum = 0

For i = 2 To lastRowDB

if DB.ListRows(i).Range(YearCol).Value = year And DB.ListRows(i).Range(CatCol).Value = category Then

  BudgetSum = BudgetSum + DB.ListRows(i).Range(BudgetCol).Value

End if

Next i

test = BudgetSum

End Function

Microsoft 365 및 Office | Excel | 가정용 | Windows

잠긴 질문. 이 질문은 Microsoft 지원 커뮤니티에서 마이그레이션되었습니다. 질문이 도움이 되었는지 여부에 대해 응답할 수는 있지만, 메모나 회신을 추가하거나 질문을 따를 수는 없습니다.

댓글 0개 설명 없음

질문 작성자가 수락한 답변

익명
2023-09-01T08:09:03+00:00

안녕하세요, 제 이름은 Ajibola이고 오늘 당신을 도울 수있어서 기쁩니다!

Excel에서 사용자 지정 VBA 함수를 사용할 때 발생하는 오류(#NAME?)는 일반적으로 다음 문제 중 하나로 인해 발생합니다.

  1. **함수 이름 문제:** 사용 중인 함수 이름이 VBA 코드에 정의된 이름과 일치하는지 확인합니다. 귀하의 경우 함수를 'test'로 정의했으므로 Excel에서 '=test(year, category)'로 사용해야 합니다.
  2. **VBA 모듈 위치:** 사용자 지정 함수가 포함된 VBA 모듈은 함수를 사용하려는 통합 문서와 동일한 통합 문서에 있어야 합니다. 코드가 다른 통합 문서에 있는 경우 현재 통합 문서에서 해당 코드를 사용할 수 없습니다.
  3. **보안 설정:** Excel 보안 설정이 매크로 또는 VBA를 사용하지 않도록 설정된 경우 사용자 지정 함수에 문제가 발생할 수 있습니다. Excel 설정에서 매크로를 사용할 수 있는지 확인합니다.
  4. **컴파일 오류:** 사용자 지정 함수를 사용하기 전에 VBA 코드가 오류 없이 컴파일되는지 확인하십시오. 코드에 구문 오류나 오타가 있는지 확인합니다.

이제 VBA 코드를 살펴보면 몇 가지 문제가 있습니다.

  • 'YearCol'을 두 번 정의했습니다. 두 번째 선언을 제거합니다.
      Dim YearCol As Long, CatCol As Long ' 두 번째 YearCol 선언 제거
    
  • 통합 문서의 VBA 모듈에 사용자 지정 함수를 추가했는지 확인합니다. 'ALT + F11'을 눌러 VBA 편집기를 연 다음 새 모듈을 삽입하고 코드를 붙여넣으면 됩니다.
  • 이러한 문제를 수정한 후에는 셀에서 다음과 같은 사용자 지정 함수를 사용할 수 있습니다.
      =테스트(2023, "카테고리 A")
    
  • 함수 호출에서 올바른 연도 형식을 사용하고 있는지 확인합니다. 예를 들어 데이터의 연도가 숫자(예: 2023)로 저장된 경우 '"2023"'(따옴표 포함)이 아닌 '2023'으로 사용합니다.

이러한 문제를 해결했는데도 여전히 문제가 발생하는 경우 발생한 특정 오류 메시지 또는 동작에 대한 자세한 정보를 제공해 주시면 기꺼이 도와드리겠습니다.

추가 질문이 있거나 추가 지원이 필요하면 언제든지 문의하십시오. 제가 도와드릴게요!

답변이 도움이 되었다면 찬성표를 던지거나 답변으로 받아들이는 것을 잊지 마세요.

감사합니다

자동 번역된 답변으로, 문법 오류나 어색한 표현이 있을 수 있습니다.

이 대답이 도움이 되었나요?

1명이 이 답변이 도움이 된다고 생각했습니다.
댓글 0개 설명 없음

0 추가 답변

정렬 기준: 가장 유용함