• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コードがうまく作れません)

コードがうまく作れません

このQ&Aのポイント
  • 「コードがうまく作れません」というエラーが発生しています。
  • 問題のコードを見ると、iの値に一致するセルをAK列のセルから探し出し、一致したら同じ行のセルBA列の値を合計します。
  • しかし、実行すると合計が全て0になってしまいます。どうすれば良いかご指導をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • googoo900
  • ベストアンサー率44% (82/184)
回答No.2

>これで実行すると合計が全て0になります。 これは、9行目でシート2をアクティベートしているため、それ以降すべてシート2を参照しています。 おそらくシート2にはデータがないので、合計はゼロになってしまいます。 コードは以下のようになります。tokotoko99321さんのコードをベースに改造して特にむずかしい構文は使っていません。 ※tokotoko99321さんが作られていたようにすべてのiに対してシート2に書き出すようにしています。 iの値に一致する場合のみシート2に抜き出す場合には、コード中のコメントにも書いているとおり、行頭の『'』マークを2ヶ所削除してその行が実行されるようにしてください。 Sub sou() Dim h, i, e, f, endrow As Integer Dim count, goukei h = 1 e = 1 f = 1 count = 0 goukei = 0 Worksheets("Sheet1").Activate endrow = Cells(Rows.count, "AK").End(xlUp).Row For i = 12345 To 45787 For h = 1 To endrow If i = Cells(h, "AK") Then count = Cells(h, "BA") goukei = count + goukei End If Next h 'If goukei <> 0 Then 'iの値に一致するものがない場合はシート2に書き込まないのであれば、行頭の『'』を削除する Worksheets("sheet2").Cells(e, "A") = i Worksheets("sheet2").Cells(e, "B") = goukei e = e + 1 'End If 'iの値に一致するものがない場合はシート2に書き込まないのであれば、行頭の『'』を削除する goukei = 0 Next i End Sub

tokotoko99321
質問者

お礼

丁寧に教えてくださりありがとうございます。ベストアンサーとさせていただきます。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>これで実行すると合計が全て0になります。 なぜ0になるのか説明は無ですか? Sub sou()   Dim i As Long, h As Long, e As Long, goukei As Long   Dim flg As Boolean   With Worksheets("Sheet1")     For i = 12345 To 45787       For h = 1 To .Cells(Rows.count, "AK").End(xlUp).Row         If i = .Cells(h, "AK").Value Then           goukei = goukei + Cells(h, "BA").Value           flg = True         End If       Next h       If flg = True Then         e = e + 1         Worksheets("sheet2").Cells(e, "A").Value = i         Worksheets("sheet2").Cells(e, "B").Value = goukei         goukei = 0         flg = False       End If     Next i   End With End Sub

関連するQ&A