【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

こんばんは
エクセル2010VBAで、シート見出しが青色で、そのシートのセル(L15、L21、L27・・・L45)と(P15、P21、P27・・・P45)の値を集計用紙にB2とC2の列に貼り付けるにはどうしたらよいのでしょうか?

色々な名前でシート見出しが作られており、唯一、目的シートが青色で分別されています。
見出し色指定のコードの作り方が、わかりません。
宜しくお願い致します。

A 回答 (3件)

何度もごめんなさい。



「集計用紙」の「集計」という言葉で思い込みをしていました。
集計するのではなく、単に集計用紙のB・C列の2行目以降に
「青」のSheet見出しデータを羅列すれば良い訳ですよね?

今までのコードは無視して、標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub Sample3()
Dim i As Long, k As Long, cnt As Long
cnt = 1
For k = 1 To Worksheets.Count
With Worksheets(k)
If .Tab.Color = RGB(0, 112, 192) Then
For i = 15 To 45 Step 6
cnt = cnt + 1
Worksheets("集計用紙").Cells(cnt, "B") = .Cells(i, "L")
Worksheets("集計用紙").Cells(cnt, "C") = .Cells(i, "P")
Next i
End If
End With
Next k
End Sub

今度はどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。出来ました。感激です。
なかなかイメージが伝わらなく、自分の文書力の無さに恥ずかしく思います。お手数をお掛けし申し訳ありませんでした。色々勉強になりました。
心から、感謝いたします!!

お礼日時:2013/03/26 18:04

No.1です!


補足を読みました。

Sheet見出し色が「青」のSheetが複数あるわけですね?
↓のコードに変更してマクロを実行してみてください。

Sub Sample2()
Dim i As Long, k As Long, cnt As Long, vL1, vL2
cnt = 1
For k = 1 To Worksheets.Count
If Worksheets(k).Tab.Color = RGB(0, 112, 192) Then
cnt = cnt + 1
For i = 15 To 45 Step 6
vL1 = vL1 + Worksheets(k).Cells(i, "L")
vL2 = vL2 + Worksheets(k).Cells(i, "P")
Next i
With Worksheets("集計用紙").Cells(cnt, "B")
.Value = vL1
.Offset(, 1) = vL2
End With
vL1 = 0
vL2 = 0
End If
Next k
End Sub

今度はうまくいけば良いのですが・・・m(_ _)m

この回答への補足

何度も申し訳ありません。Sheetは複数あります。例えば、Sheet2が青色、そのシートのセル(L15、L21、L27・・・L45)と(P15、P21、P27・・・P45)の値を集計用紙のB2を先頭にL15の値、B3にL21の値・・・B7にL45の値。C2を先頭にP15の値、C3にP21の値・・・C7にP45の値と抽出したいのです。Lに値があればPにも値はあります。)これを踏まえSheet15が青色ならば、集計用紙B列、先ほどSheet2の値が入力されている最終列より入力を開始します。

補足日時:2013/03/26 01:40
    • good
    • 0

こんばんは!



>唯一、目的シートが青色で分別されています
とありますが、Excel2010の場合「青」といっても色々な「青」が選択できると思います。

「標準色」の「青」(右から3番目)を選んだ場合の一例です。

標準モジュールにコピー&ペーストしてマクロを実行してみてください。

Sub Sample1()
Dim i As Long, k As Long, vL1, vL2
For k = 1 To Worksheets.Count
If Worksheets(k).Tab.Color = RGB(0, 112, 192) Then
For i = 15 To 45 Step 6
vL1 = vL1 + Worksheets(k).Cells(i, "L")
vL2 = vL2 + Worksheets(k).Cells(i, "P")
Next i
End If
Next k
With Worksheets("集計用紙").Range("B2")
.Value = vL1
.Offset(, 1) = vL2
End With
End Sub

※ Sheet見出しの色を判別する場合は、
青色Sheet見出し上で右クリック → シート見出しの色 → 「その他の色」 → 「ユーザー設定」タブ
これでRGB値が表示されていますので、そのままの数値をコード内のRGB値部分に入れます。

こんなんではどうでしょうか?m(_ _)m

この回答への補足

説明不足で申し訳ありません。対象シート(青色)のすべての値がB2とC2のセルに入力されてしまいます。希望は、B2を先頭にB列に・C2を先頭にC列に1つの値を入力したいのです。

補足日時:2013/03/24 17:23
    • good
    • 0

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