2017-10-17 15 views
-2

ExcelのSumif式をVBAの動的コードに変換したいと考えています。私はこの式を常に最後の行に入れて、私が必要とするものを計算することができます。マクロレコードを作成し、行番号の代わりに整数を挿入しようとしましたが、動作しません。Excelの動的Sumif式VBA

たとえば、 今月は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)Integerではなく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]の方法で使用されます。あなただけの絶対的な表記法を使用して、すべてこのを取り除くことができます。

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

ないあなたのコードで指定されていない最初の行(R1)、からのものである場合を確認してください。

+0

いいね、シンプル。 – SJR