匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

VBAのfor next構文での変数優先順位について。


VBA初心者です。
dtシートの2列目の項目名i(仮に100項目)とmtシートの1列目の項目名a(仮に10項目)を照合し、
同項目名であれば、dtの数値列の数値を積み上げ、
mtの数値列に合計値を入れていきたいです。
※dtシートの項目の重複をなくした状態がmtシートの項目となっています。

ここで、i=1~100、a=1~10という変数において、aを優先的に、
a=1の時にi=1~100で数字を集計し、
a=2の時にi=1~100で数字を集計し、

a=10の時にi=1~100で数字を集計する。
という命令をしたいのですが、下記の書き方ではうまくいきません。

For i = 4 To dt.Cells(Rows.Count, 2).End(xlUp).Row
For a = 2 To mt.Cells(Rows.Count, 1).End(xlUp).Row
If dt.Cells(i, 2) = mt.Cells(a, 1) Then
合計値 = 合計値 + dt.Cells(i, 4)
End If
Next a
Next i
mt.Cells(a, 2) = 合計値

何らかのご指摘、アドバイス頂きたいです。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2012/09/04 11:07:34
  • 終了:2012/09/11 11:10:03

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2012/09/04 11:35:01

aのループとiのループの内外関係が逆ですよ。
iのループを内側にしないと。
VBAであるか否か、言語の種類とは無関係ですね。

他2件のコメントを見る
匿名質問者

ありがとうございます!
合計値の最終入力もループ内で処理しなければいけないですよね。。。

最後の方を、下記のように書き直すことで、思い通りの動きになりました!!

Next i
mt.Cells(a, 2) = 合計値
合計値 = 0
Next a

2012/09/04 14:05:40
匿名回答1号

良かったですw Excel VBAの修行、頑張って下さい!

2012/09/04 14:15:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません