2016-07-29 7 views
0

아래 그림과 같이 Excel vba에서 고급 필터 테이블을 작성하려고합니다. 마지막 열에서는 아래 배열 수식을 사용하고 있습니다.excel vba FormulaArray

Worksheets("Contracts").Range("N13:N" & Worksheets("contracts").Range("M" & Rows.Count).End(xlUp).Row).FormulaArray = _ 
"=sum(if(invoice!$A$3:$A$2000=contracts!B13,invoice!$AA$3:$AL$2000))" 

내가 겪고있는 문제는 셀을 변경하지 않고 범위의 모든 셀에 수식을 복사한다는 것입니다 : contracts! B13. 그것은 동일하게 유지됩니다. B13.

내가 틀렸다

Advanced Filter

?

는 다니엘에게 감사

+0

그럼, 그것을 변경해야합니까? C13, D13 .. 등등? –

+0

B14, B15, B16 등으로 바뀌어야합니다. :-) –

답변

0

당신은 이런 식으로 작업을 수행 할 수 있습니다

lastRow = Range("M" & Rows.Count).End(xlUp).Row 
For i = 13 to lastRow 
    Worksheets("Contracts").Range("N13:N" & i).Formula = _ 
    "=sum(if(invoice!$A$3:$A$2000=contracts!B" & i & ",invoice!$AA$3:$AL$2000))" 
Next 
+0

같은 문제가 있습니다. 배열 수식입니다. 워크 시트 ("계약") 범위 ("N13") 복사 워크 시트 ("계약") 범위 ("N14 : N"및 워크 시트 ("계약")) 범위 ("M"& Rows.Count) .End (xlUp) .Row) .PasteSpecial xlPasteFormulas –

+0

완전히 이해하지 못합니다. 무슨 문제에 빠지니? 같은 공식을 다시 쓸 수는 없습니다. Oo –

+0

"Worksheets ("Contracts "). 범위 ("N13 : N "& i) .Formula = _"수식이 바뀌고 있지만 첫 번째 셀 참조는 B와 마지막 행 번호입니다. 내 경우에는 첫 번째 행이 40이 아닌 13이됩니다. 그러나 ".Formula"를 ".FormulaArray"로 변경하면 셀 전체에 동일한 수식이 적용됩니다. –