2017-12-27 20 views
-2

이전에 테이블의 전체 열에 대해 & 일치 수식을 한 시트에서 다른 시트로 수행하는 Excel VBA 코드가 있습니다. 아래 코드 예제 :배열 수식을 VBA를 통해 Excel에 삽입하는 방법은 무엇입니까?

With Me.Range("table1[Description]") 
    .Formula = "=IFerror(INDEX(table2,MATCH(B4,table2[Asset No],0),2),"""")" 
    .Value = .Value 
End With 

가 지금은 시트에 배열 기능을 추가하고 싶습니다 그래서 수식을 복사하여 다른 수정과 함께 배열로 기존의 공식을 교체합니다. 내가 코드를 테스트 할 때

Sub refresh() 

With Me.Range("table1[Last Service Date]") 
    .FormulaArray = "=LARGE(IF(table2[[#All],[Asset No]]=[@[Asset No]],table2[[#All],[Entry Date]]),2)" 
    .Value = .Value 
End With 

End Sub 

는하지만, 나는 오류 메시지가 나는 배열 수식 내 코드를 변경해야 400 아무것도가 계속?

+0

물론 내가 '선택'을 사용 했으므로 * 가리키고있는 셀에. – JohnyL

+0

죄송합니다. 죄송합니다. 우연히 저의 오래된 테스트 코드를 사용했습니다. 나는 적절한 것으로 편집 할 것이다. – hjh93

+0

당신은 [이전 질문] [1] (지금 나는 당신의 후속 질문을 이해한다)을 바꿔서 좋다. 그러나 이것에 대한 더 많은 정보가 필요하다. 나머지 오류 메시지는 무엇이며 어떤 행이 발생하고 있습니까? 'Me.Range ("table1 [Last Service Date]")'가 유효한 범위입니까? '.Formula = "1 + 1"'처럼 "정규"공식을 넣으려면 어떻게됩니까? 또한,'.Value = .Value'의 목적은 무엇입니까? – ashleedawg

답변

0

코드에서 나를 사용하는 이유는 무엇입니까? 시트 모듈에이 코드를 삽입 했습니까? 이 코드를 Module1과 같은 표준 모듈로 옮기고 Me 키워드를 적절한 시트 참조로 바꾸는 것이 좋습니다. 그렇지 않으면 그 코드를 시트 모듈에 배치해야 할 타당한 이유가 있기를 바랍니다.

또한 원하는 열의 테이블의 첫 번째 셀에 배열 수식을 배치해야하며 데이터는 Excel 테이블 형식이므로 전체 수식이 자동으로 수식으로 채워집니다. 그렇지 않은 경우 자동 채우기 속성을 사용하여 수식을 행 아래로 채울 수 있습니다.

문제가 해결되는지 확인해보십시오. 대답은 시트에 VBA를 수동으로 배치 할 때 VBA를 통해 배치하려는 수식이 잘 작동한다고 가정합니다.

With Me.Range("table1[Last Service Date]").Cells(1) 
    .FormulaArray = "=LARGE(IF(table2[[#All],[Asset No]]=[@[Asset No]],table2[[#All],[Entry Date]]),2)" 
    .Value = .Value 
End With 
+0

실제로 배열 수식의 전체 대상 범위를 지정하는 것이 첫 번째 셀을 지정한 다음 복사하는 것보다 효율적입니다. – Variatus

+0

그게 효과가 없을 것이라고 생각합니다. VBA를 통해 배열 수식을 전체 범위에 적용 해 본 적이 있습니까? – sktneer

+0

예, 했어요. Excel 2010. 'ArrRng.FormulaArray = "= MINVERSE ("& DataRange & ")"' – Variatus