이것은 내 첫 번째 게시물이므로 가능한 한 명확히하기 위해 최선을 다할 것입니다.가변 워크 시트의 범위 합계를위한 Excel UDF
저는 올바른 해결책으로 UDF에 정착했습니다.하지만 그것은 기능이 내장되어있는 것이 무엇인지 파악할 수 없었기 때문입니다.
내 통합 문서는 "요약 시트"와 "{시스템 템플릿}"의 두 시트가 있습니다. 요약 시트에서 필자는 시스템 목록을 만들고이 목록에서 {System Template}을 사용하여 새 워크 시트를 생성하고 목록의 값을 기준으로 시트의 이름을 지정합니다.이 값은 정상적으로 작동합니다. 요약 시트에 시스템 이름이 포함 된 셀 옆에있는 셀에서 해당 시트의 각기 다른 시스템에 대해 "Q : Q"범위의 값을 합산하려고합니다. 변경되는 범위의 유일한 부분은 데이터가 들어오는 시트 이름입니다. 이것이 내가 문제를 일으키는 곳입니다. #Value 오류가 발생하고 문제의 위치를 파악하는 방법을 알지 못합니다. 일반적으로 내장 된 수식 평가 도구를 사용하지만 UDF에서는 쓸모가 없습니다. 어떤 도움이라도 대단히 감사 할 것입니다.
=SUM(INDIRECT("'" & A1 & "'!Q:Q"))
당신이 원하는 것을 수행해야합니다
Function FrictionSum(rngInput As Range)
Dim rngCell, rngDomain As Range
Dim strName As String
FrictionSum = 0
'FrictionSum = rngInput.Value
Set rngDomain = Sheets(strName).Range("Q:Q")
For Each rngCell In rngDomain
FrictionSum = FrictionSum + rngCell.Value
Next rngCell
End Function
당신은'Function' 정의하고 있지만, 당신은 그냥하는'Sub' 사용할 수 있습니다 아무것도 반환하지 않거나 당신이'로 정의 할 필요가 기능 FrictionSum (rngInput로 범위) As Long. 또한, 당신은'rngInput'을 전달하고 있지만, ** UDF ** 내부에서는 아무 것도하지 않습니다. –
그래서'= SUM (INDIRECT (" '"& A1' "! Q : Q"))'여기서 A1은 시트 이름이 작동하지 않았습니까? –
또한 strName에 값을 지정하지 않으므로 Excel에서 추측 할 수 있습니까? –