2017-10-17 1 views
-2

Excel의 Sumif 수식을 VBA 동적 코드로 변환하고 싶습니다. 이 수식이 항상 마지막 행에 있어야하고 내가 필요한 것을 계산할 수 있기를 바랍니다. 매크로 레코드를 수행하고 행 번호 대신 정수를 삽입하려고했지만 작동하지 않습니다.Excel VBA의 동적 Sumif 수식

예를 들어, 이번 달에는 175 개의 행이 있으며 다음에 나는 200 또는 140 개가 남고 모든 나머지는 동일하게 유지됩니다. 여기

내가 공식에 만든 기록을 내 코드입니다 : 그것은 따옴표를 벗어나는 않도록주의를 복용

Dim ir As Integer 

ir = Range("H1", Range("H1").End(xlDown)).Rows.Count 
Range("H2").End(xlDown).Offset(1, 0).Select 

ActiveCell.FormulaR1C1 = _ 
    "=SUMIF(R[-174]C[-5]:R[-1]C[-5],""*total*"",R[-174]C:R[-1]C)" 

답변

2

1) 당신은 당신의 공식 라인에 마지막 행 변수를 통합해야;

2) 정수가 아닌 Long을 사용하십시오 (더 효율적이고 더 많은 행을 처리합니다).

3) 마지막 행을 찾으려면 맨 아래에서 위로 이동하십시오 (행이 1 개인 경우를 대비하여).

4) Select/ActiveCell을 사용할 필요가 없습니다.

Sub x() 

Dim ir As Long 

ir = Range("H" & Rows.Count).End(xlUp).Row 

Range("H" & ir + 1).FormulaR1C1 = "=SUMIF(R[-" & ir & "]C[-5]:R[-1]C[-5],""*total*"",R[-" & ir & "]C:R[-1]C)" 

End Sub 
2

R1C1 표기법은 절대 R1C1 또는 상대 R [-1] C [1] 방식으로 사용됩니다. 당신은 모든 단지 사용 절대 표기 없애 할 수없는 코드에 지정된 첫 번째 행 (R1)에있는 경우,

Range("H2").End(xlDown).Offset(1, 0).FormulaR1C1 = _ 
    "=SUMIF(R1C[-5]:R[-1]C[-5],""*total*"",R1C:R[-1]C)" 

확실하지.

+0

좋아, 좋아요. – SJR