2017-06-13 33 views
0

私はウェブサイト上で登録されていると私は、私は以下の問題(私はVBAでの専門家ではない)にいくつかの助けを得ることができると確信してい..VBA - SUMIFS - インクリメント列 - エラー1004

簡単に言うと、2つのパラメータ(列Aと列G)に基づいて(各行の列Iの)合計量を計算するマクロを実行しています。私はSUMIFS関数を使用していますが、これは1つのセルに有効です。しかし、私はすべての行のためにそれを自動化したいのですが、それは私のためにトリッキーになり..ここ

は、セルI2のために動作するコードです:

Sub quantity_aggregated()  
    Dim sht As Worksheet, LastRow As Long, i As Integer  
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row  
    Set sht = ThisWorkbook.Worksheets("JDE_Greece")  
    Range("I2").Formula = "=SUMIFS(H:H,G:G,G2,A:A,A2)"  

私はそのように維持するが、統合したいですa行2から開始し、最後に入力された行で終了します。以下、いくつかのコードについて

思った(と試み)、異なる3(末端iおよびマクロを閉じをインクリメント、同一である):

For i = 2 To LastRow  

'Range("I2").Formula = "=SUMIFS(H:H,G:G,Range(i,7),A:A,Range(i,1)"''  

'Range(i, 9).Value = Application.WorksheetFunction.SumIfs(Range("H:H"), Range("G:G"), Range(i, 7), Range("A:A"), Range(i, 1))' 

'Cells(i, 9).FormulaR1C1 = "=SUMIFS(H:H,G:G, "'  

Next i  
End Sub 

Iのプロセスを理解するが、それぞれについて、「ありますメソッド全体のオブジェクトの範囲が失敗しました(エラー1004) "がポップアップします。私は、それがアプリケーション、オブジェクトまたは何かを定義することについて何かだと確信していますが、それを解決することはできません。

誰にもアイデアはありますか?それは:)あなたは、単に全体の範囲Iに式を適用することができます

答えて

1

事前に

どうもありがとう、本当に素晴らしいことです。 A2およびG2への参照は"relative"であるため、数式は範囲内の各行に対して体系的に調整します。

Dim sht As Worksheet, LastRow As Long 
Set sht = ThisWorkbook.Worksheets("JDE_Greece")  
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row  
sht.Range("I2:I" & LastRow).Formula = "=SUMIFS(H:H,G:G,G2,A:A,A2)" 

あなたは「練習用」のループでそれをしたい場合は、

For i = 2 To LastRow 
    sht.Range("I" & i).Formula = "=SUMIFS(H:H, G:G, G" & i & ", A:A, A" & i & ")" 
Next i 

が、これは最初の形式で舞台裏で起こるまさにであることに注意してください。

+0

こんにちは、 確かに、これはうまくいきました。これは間違いなく速いです...私はこの単純なことをほとんど忘れてしまっています。ありがとうございました。 しかし、このループがうまくいかない理由について何か手掛かりがありますか?ループを挿入したい場合、単純なコードはどうなるでしょうか(私は練習したいと思います)。 お返事ありがとうございます – Jeofbist3

+0

"@ Jeofbist3はループを使って数式が' SUMIFS(H:H、G:G、G "&i&"、A:A、A "&i&") " –

+0

ニース!!ありがとうございました:) – Jeofbist3