- ベストアンサー
エクセルマクロでシート名の取得とデータの集計方法について
- エクセルのマクロを使用してシート名を取得し、一覧化する方法について質問があります。
- 特定のシート名を一覧から外す方法について教えてください。
- また、各社員のシートから特定の範囲のデータを取得し、集計シートに貼り付ける方法も知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 各社員のシートにあるデータの一部(セルC5:C8)を貼り付けたいです。 > 各社員のシートのD列の情報(D6:D43)を順に貼り付けていく。 上記、具体的にどこのセルに貼るか示されていませんので、A2セル以下にそれぞれ貼っています。 また、シート番号は4以降の個人を取得すれば良さそうですが、今後別のシートが増えても良いようにシート名で管理シートと個人シートを判断しています。 Sub シート名取得等() For I = 1 To Worksheets.Count Select Case Worksheets(I).Name Case "シート名一覧", "集計シート", "操作" Case Else 人数 = 人数 + 1 With Worksheets("シート名一覧").Range("A2").Offset((人数 - 1)) .Offset(0, 0) = Worksheets(I).Name Worksheets(I).Range("C5:C8").Copy .Offset(0, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True End With With Worksheets("集計シート").Range("A2") Worksheets(I).Range("D6:D43").Copy .Offset((人数 - 1) * 38, 0).PasteSpecial Paste:=xlPasteAll End With End Select Next I End Sub
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
簡易版です。 sub macro1() dim i as long for i = 4 to worksheets.count worksheets("シート名一覧").range(i-3, "A") = worksheets(i).name worksheets("シート名一覧").range(i-3, "A").resize(1, 4) = _ application.transpose(worksheets(i).range("C5:C8")) worksheets("集計シート").range("A6:D43").offset(0, i-2).value = _ worksheets(i).range("D6:D43") next i end sub 各シートの具体的にどこに貼りたいとかの情報がありませんので,サンプルをまずはその通り動かして動作確認したあと,きちんとあなたのヤリタイ事に応用してください。 すこし「Excel VBA」の初歩の参考書を1冊手にとって,変数の使い方とか繰り返しやIf Then End Ifなどのプログラムの書き方について,勉強を進める段階に入ったと思ってください。この時点であまりネットの断片的な情報を漁って済まそうとしたり,人任せでなんでも丸投げお願いばっかりやってると,いつまでも出来ないです。
お礼
keithinさんのおっしゃる通りだと思います。、 >この時点であまりネットの断片的な情報を漁って済まそうとしたり,人任せでなんでも丸投げお願いばっかりやってると,いつまでも出来ないです。 参考書も1冊買って勉強はしているつもりですが、 自分自身応用力がないというか、 参考書の例を使って、自分が使うものに書き換える作業が 中々うまくできていません。 ご指導ありがとうございました。
お礼
迅速な答えありがとうございます。 今やってみましたが、うまくいきました。 本当に助かりました。