programing

Excel VBA - 동적 배열 수식을 추가하는 방법

lastcode 2023. 6. 21. 22:39
반응형

Excel VBA - 동적 배열 수식을 추가하는 방법

VBA를 통해 워크시트에 다음과 같은 공식을 추가합니다.

=UNIQUE(IF(TableA[ColumnA]=A1,TableA[ColumnB],""))

이는 Excel의 새로운 SPLE 기능을 활용하여 열 A의 관련 값이 셀 A의 값과 일치하는 열 B의 값 목록을 제공합니다.또한 여러 개의 빈 결과(""")를 제거하기 위해 고유 기능을 적용하고 있습니다.

수식을 Excel에 수동으로 입력하면 완벽하게 작동하지만, VBA를 사용하여 수식을 추가할 때 Excel은 수식에 @ 기호를 추가하여 #VALUE!를 표시합니다.

공식을 추가하는 데 사용되는 VBA 라인은 다음과 같습니다.

=Cells(x,y).Formula = "=UNIQUE(IF(TableA[ColumnA]=A1,TableA[ColumnB],""""))"

Excel의 결과 출력은 다음과 같습니다.

=@UNIQUE(IF(TableA[@[ColumnA]]=A1,TableA[ColumnB],""))

무슨 일이 일어나고 있고, 내가 놓친 것은 무엇입니까?

잘 부탁드립니다!

좋은 질문입니다. 제가 찾아봤는데요...


간단히 말해서:

사용하다=Cells(x,y).Formula2대신에=Cells(x,y).Formula


설명:

@를 나타내는 것을 암시적 교차 연산자라고 합니다.MS 문서에서:

암시적 교차 논리는 많은 값을 단일 값으로 줄입니다.셀은 단일 값만 포함할 수 있으므로 Excel은 수식이 단일 값을 반환하도록 강제하기 위해 이 작업을 수행했습니다.공식이 단일 값을 반환하는 경우 암시적 교차는 기술적으로 백그라운드에서 수행되는 경우에도 아무런 작업이 수행되지 않았습니다.

그런데 왜 그것이 당신의 새로운 엑셀 O365에 나타나나요?음.Range.FormulaIIE(암묵적 교차)를 사용하여 다음을 추가합니다.@기본적으로 동적 배열 기능을 실행 취소합니다.UNIQUE 는 새로운 동적 배열 함수입니다.따라서 코드로 작성하려면 속성을 사용해야 합니다(또는 사용할 경우).R1C1표기법).이러한 속성은 AE(array evaluation)를 사용하며 현재 기본값입니다.

  • 여기 그 주제에 대한 MS의 유익한 문서가 있는데, 그것은 사이의 차이를 설명합니다.Formula그리고.Formula2좀더 상세하게

  • 암시적 교차로 연산자에 대해 더 알고 싶다면 다음을 살펴보십시오.

  • 저는 앞서 암묵적인 교집합과 관련된 또 다른 질문에 흥미를 느낀다면 실제로 어떻게 작동하는지에 대한 를 들어 답했습니다.

언급URL : https://stackoverflow.com/questions/61138029/excel-vba-how-to-add-dynamic-array-formula

반응형