牛、豚、鶏、どれか一つ食べられなくなるとしたら?

Sub z()
Dim i As Long
Dim j As Long
Dim zz As Long
zz = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To 4
For j = 9 To 15
With Worksheets("sheet1")
Sheets("sheet2").Cells(i, j).Value = Application.SumIfs(.Range("c4:c" & zz),

.Range("a4:a" & zz), Sheets("sheet2").Cells(i, 8),

.Range("b4:b" & zz), Sheets("sheet2").Cells(j, 2))
End With
Next j
Next i
End Sub

Sheets("sheet2").Cells(i, j).Valueに転記したいのですが、
Sheets("sheet2").Cells(i, 8) この部分がおかしいと思いますが
わかりせん。
教えてくれませんでしょぅか
sheet1
販売先 月 販売額
井上商事 4 52000
上田青果 4 65000
井上商事 4 78000
上田青果 4 43000
井上商事 4 45000
上田青果 5 57000

sheet2
4 5 6 7
井上商事 0 0 0 0
上田青果 0 0 0 0

A 回答 (4件)

No.2です。



あと直接この質問に付いてではなく、過去に質問された点についてですが。

scripting dactionary のやり方
https://oshiete.goo.ne.jp/qa/10018943.html

こちらのベストアンサーにある回答の

>連想配列は値を1つしか格納できません。

は、確かに1つではあるのですが『1つの値』ではありません。
それは他の回答者のコード等にある『配列を1つ』であれば『複数の値』を入れられますから、
本来Dictionaryは2つ必要はないのです。
格納できるのは『1つのオブジェクト』ですので、例えばCollectionを入れたら
『1つのキーに対し複数の配列』をも入れられますかね。
取り出すのが面倒ではありますが。

以前気になった際に締め切られてしまいましたので、この場をお借りして補足致しました。
    • good
    • 0
この回答へのお礼

>連想配列は値を1つしか格納できません。
いろいろ有難うございます。
ネットで私も調べたら同意

お礼日時:2017/11/05 08:12

NO.1です。



>>【行・列】逆になってません?
>逆でした。

取り敢えず問題は解決できそうですか?
    • good
    • 0
この回答へのお礼

解決しました。
いつも有難うございます。

お礼日時:2017/11/05 08:50

No.1です。



あとWorksheetsならWorksheetsに統一すべき、Sheet名も『頭文字は小文字?』と疑問はあります。
    • good
    • 0
この回答へのお礼

いろいろ有難うございます。

お礼日時:2017/11/05 08:12

うちのExcelは古いので検証できませんが。



SUMIFS(合計対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)

合計対象範囲:.Range("c4:c" & zz)
条件範囲1:.Range("a4:a" & zz)
条件1:Sheets("sheet2").Cells(i, 8)

となりますけど、Sheet2のH列に何があるのでしょうね?
この場合『販売先』であるA列(?)の『1(?)』になりそうな気がしますけど?
シート構成が良くわからない(どこの列にデータがあるのか?)ので憶測ですけど。

あと

>.Range("b4:b" & zz), Sheets("sheet2").Cells(j, 2))



Sheets("sheet2").Cells(j, 2)

ここのCellsって【行・列】逆になってません?
Cells(2,j) のように感じます。

仮にいきなりVBAで書いたとするなら、出来れば先に『数式』でシートに書いてみて、
セルがどのように変化しているのかを確認した後に、VBAで変数を用いるとわかりやすいとは
個人的には思いますけど。
    • good
    • 0
この回答へのお礼

【行・列】逆になってません?
逆でした。

お礼日時:2017/11/05 08:13

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