こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル マクロ シートの集計

エクセル・マクロについての質問です。1つのブックに、複数の単票と集計表があります。単票の名称はすべて「○課△係」で、2~10シート程度でシート数は変動します。集計表は1シートで、名称は”「集計」です(その他に1シート有り)。単票と集計表のA列が一致した行(の特定の列)に、単票から集計表へデータを転記します。単票ごとに処理を繰り返し、集計表を完成させたいのですが、エラーが出て実行できません。お忙しいところ誠に恐縮ですが、ご教授方宜しくお願いいたします。

Sub 集計()
Dim T As Worksheet
Dim p As Long, q As Long, n As Long, m As Long, y As Long
T.Name = "*課*係"
For Each T In Worksheets
For n = 10 To 50 '
p = T.Cells(n, 1)
For m = 2 To 550
If Sheets("集計").Cells(m, 1) = p Then
y = 5 + T.Range("B4")
Sheets("集計").Cells(m, y).Value = q
Exit For
End If
Next
End Sub

投稿日時 - 2011-04-16 17:10:10

QNo.6672516

困ってます

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

エラーが出るのは文法的におかしいからです。
お書きになったコードを文法的に修正すると以下のようになります。
これでエラーはなると思いますが、集計シートには0しか転記されないと思います。
Sheets("集計").Cells(m, y).Value = q で使っている変数qがどこにも定義されていないようですから。

Sub 集計()
  Dim T As Worksheet
  Dim p As Long, q As Long, n As Long, m As Long, y As Long
  For Each T In Worksheets
    If T.Name Like "*課*係" Then
      For n = 10 To 50
        p = T.Cells(n, 1).Value
        For m = 2 To 550
          If Sheets("集計").Cells(m, 1).Value = p Then
            y = 5 + T.Range("B4").Value
            Sheets("集計").Cells(m, y).Value = q
            Exit For
          End If
        Next m
      Next n
    End If
  Next
End Sub

投稿日時 - 2011-04-16 18:49:03

お礼

qを定義?したら実行されました! ありがとうございました!

投稿日時 - 2011-04-16 23:03:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

まずNEXTが2個足りません

T.Name = "*課*係"
の意味が私には分かりません。多分これはエラーになるでしょう。


それと
qに値が代入されていません

y = 5 + T.Range("B4")

B4の値に5を足した数を集計シートのセルの列数に指定するのでいいのですか?

> 単票と集計表のA列が一致した行(の特定の列)に、単票から集計表へデータを転記します。

これがどの列を指すのか分からないのでそこの指定が正しいのかどうかは不明です。

また、この場合1個でもデータが見つかると次を探しませんがそれでいいのでしょうか?
もし、一致するデータが複数合って検索するのでしたら
FINDを利用すればいかがでしょうか
ヘルプに使用例があります。

また、両方ともデータが無い場合も一致したとみなされると思われます。


それと

For Each T In Worksheets
If T.Name <> "集計" Then
やりたいこと
End If

のような流れになると思われます。

投稿日時 - 2011-04-16 19:23:44

お礼

回答いただき、本当にありがとうございます。参考になりました。

投稿日時 - 2011-04-16 23:01:44

あなたにオススメの質問