プロが教えるわが家の防犯対策術!

Sub te1()
Dim i As Long
Dim j As Long
Dim las As Long

las = Cells(Rows.Count, 10).Row

For i = 3 To 4
For j = 4 To 6
Cells(i, j).Value = Application.WorksheetFunction.SumIfs(Range("j2:j" & las), _
Range("h2:h9"), Cells(i, 3), _
Range("i2:i9"), Cells(2, j))
Next j
Next i

End Sub

SumIfs(Range("j2:j" & las)この部分を
SumIfs(Range("j2:j9")
とすると動作しますが自動取得できません。
間違っていないはずですが

質問者からの補足コメント

  • へこむわー

    プロシージャの外では無効です
    えらーになります。

      補足日時:2017/11/01 12:49

A 回答 (2件)

las = Cells(Rows.Count, 10).Row


で10列(J列)の最終行を求めるなら

las = Cells(Rows.Count, 10).End(xlUp).row
としてください。

J列の最終行が9行目なら、
SumIfs(Range("j2:j" & las) と
SumIfs(Range("j2:j9") は同じ結果になります。
    • good
    • 0
この回答へのお礼

できました。
有難うございます。

お礼日時:2017/11/01 13:42

よく見た訳ではありませんが「las = Cells(Rows.Count, 10).Row」は「las = Rows.Count」になってしまいます。

(常に、Excel2003 以前ならば 65,536 、Excel2007 以降ならば 1,048,576 になります)
もしかしたら「las = Cells(Rows.Count, 10).End(xlUp).Row」の間違えでしょうか?
    • good
    • 0
この回答へのお礼

できました。
有難うございます。

お礼日時:2017/11/01 13:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!