アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで複数sheetの同一セルを集計sheetへコピーしてきて一覧にし、集計するという作業を行なっています。
1~20のsheet(sheet数sheet名は変動します)を作り、一番右側に集計sheetがあります。
集計sheetのA5へsheet1のF10、A6へsheet2のF10・・・(内容は文字列)
集計sheetのB5へsheet1のG10、B6へsheet2のG10・・・(内容は数値)
とコピーしていき、B30にはB5~B29の合計がSUM関数で入っています。


VBAで、集計sheetから左側のsheetの指定セルを一気に集計sheetへコピーしてくる方法はないでしょうか。
ただし集計sheetから左側のsheet21とsheet22は集計に入れたくないという式も教えて頂きたいです。

お時間のある方、ご教授下さい。
または別の質問で参考になるようなものがあればアドレスを教えて下さい。
説明が下手で申し訳ないですが、どうぞよろしくお願いします。

A 回答 (3件)

先の解答ちょんぼでした。

whileじゃだめですねループします。
if then end if に変えてください。

Sub main()
Dim i As Integer
Dim target_sheet As Worksheet
Dim summary_sheet As Worksheet
Set summary_sheet = ThisWorkbook.Worksheets("集計シート")
i = 5
For Each target_sheet In ThisWorkbook.Worksheets
if target_sheet.Name <> "集計シート" And _
target_sheet.Name <> "sheet21" And _
target_sheet.Name <> "sheet22" then
summary_sheet.Range("A" & CStr(i)).Value = target_sheet.Range("F10").Value
summary_sheet.Range("B" & CStr(i)).Value = target_sheet.Range("G10").Value
i = i + 1
end if
Next target_sheet
End Sub
    • good
    • 0
この回答へのお礼

yyr446様
無事に1回で成功することが出来ました!
ご丁寧に訂正分のアドバイスも頂き、感謝しております。
これで毎月の作業が随分と楽になります。
どうも有難うございました。

お礼日時:2009/07/10 10:23

条件は質問の通り


右端のシートが集計sheet
右から2、3番目がsheet21、22
こちらの条件は一つ
集計sheetのセルA4を空白にしない
文字でも数値でもスペースでも良いので入れといてください

Sub test()
Dim i As Integer
For i = 1 To Worksheets.Count - 3
If Worksheets(Worksheets.Count).Range("a5").Value = "" Then
Worksheets(Worksheets.Count).Range("a5:b5").Value = Worksheets(i).Range("f5:g5").Value
Else
Worksheets(Worksheets.Count).Range("a4").End(xlDown).Offset(1).Resize(1, 2).Value = Worksheets(i).Range("f5:g5").Value
End If
Next i
End Sub

こんなもんで、参考になれば
    • good
    • 0
この回答へのお礼

hige_082様
何度か挑戦してみましたが、どうしてもデータが1件しかコピーされてこなかったのです。私の知識不足により大変申し訳ないです。
もっと勉強し、今後ご回答頂いたものを使いこなせるように頑張ります。
貴重なお時間を頂き、大変有難うございました。

お礼日時:2009/07/10 10:31

「sheet数sheet名は変動する」という事はシートを削除したり追加したりするわけですね。


そのような場合、左端のシートとか、左から何番目といったようなハンドリングは、面倒です。左から何番目のシートかをあきらめて、集計シートと集計対象外にしたいsheet21とsheet22の名前を固定にしておけばずっと楽になります。これだけです。
Sub main()
Dim i As Integer
Dim target_sheet As Worksheet
Dim summary_sheet As Worksheet
Set summary_sheet = ThisWorkbook.Worksheets("集計シート")
i = 5
For Each target_sheet In ThisWorkbook.Worksheets
While target_sheet.Name <> "集計シート" And _
target_sheet.Name <> "sheet21" And _
target_sheet.Name <> "sheet22"
summary_sheet.Range("A" & CStr(i)).Value = target_sheet.Range("F10").Value
summary_sheet.Range("B" & CStr(i)).Value = target_sheet.Range("G10").Value
i = i + 1
Wend
Next target_sheet
End Sub
    • good
    • 0

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