• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル・マクロ・・・シート名の取得等)

エクセルマクロでシート名の取得とデータの集計方法について

このQ&Aのポイント
  • エクセルのマクロを使用してシート名を取得し、一覧化する方法について質問があります。
  • 特定のシート名を一覧から外す方法について教えてください。
  • また、各社員のシートから特定の範囲のデータを取得し、集計シートに貼り付ける方法も知りたいです。

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

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.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

s2my
質問者

お礼

迅速な答えありがとうございます。 今やってみましたが、うまくいきました。 本当に助かりました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

簡易版です。 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などのプログラムの書き方について,勉強を進める段階に入ったと思ってください。この時点であまりネットの断片的な情報を漁って済まそうとしたり,人任せでなんでも丸投げお願いばっかりやってると,いつまでも出来ないです。

s2my
質問者

お礼

keithinさんのおっしゃる通りだと思います。、 >この時点であまりネットの断片的な情報を漁って済まそうとしたり,人任せでなんでも丸投げお願いばっかりやってると,いつまでも出来ないです。 参考書も1冊買って勉強はしているつもりですが、 自分自身応用力がないというか、 参考書の例を使って、自分が使うものに書き換える作業が 中々うまくできていません。 ご指導ありがとうございました。

専門家に質問してみよう