エクセルマクロでシート名の取得とデータの集計方法について
- エクセルのマクロを使用してシート名を取得し、一覧化する方法について質問があります。
- 特定のシート名を一覧から外す方法について教えてください。
- また、各社員のシートから特定の範囲のデータを取得し、集計シートに貼り付ける方法も知りたいです。
- ベストアンサー
エクセル・マクロ・・・シート名の取得等
エクセル・マクロ・・・シート名の取得等 エクセルのマクロで質問です。 ほぼ初心者です。 社内データの処理をしたいと考えています。 マクロを組みたいエクセルブックの構成としては・・・ シート名一覧 集計シート 操作 という3つのシートがあり、 その後ろに各社員のデータシートがあります。 山田太郎 田中花子 ・ ・ ・ 部署により社員数が異なるためシートの4枚目以降は そのエクセルファイルによりシート数が異なります。 やりたいことは以下の2点です。 (1)シート名(社員名)の取得 シート名一覧に各シート名を一行ずつ入れて 一覧を作りたいです。 シート名取得&リスト化のマクロは大体わかりますが、 「シート名一覧」、「集計シート」、「操作」の3つのシート名は 一覧から外したく、どうしたらいいのかわかりません。 また、各シート名を取得した列の横の列に 各社員のシートにあるデータの一部(セルC5:C8)を 貼り付けたいです。 (2)集計シートに各社員のシートのD列の情報(D6:D43)を順に貼り付けていく。 シート名や数が固定されたものであれば何とかできそうなのですが、 不特定になるとどうしたらよいかさっぱりわかりません。 どなたかご教授お願いいたします。
- s2my
- お礼率100% (2/2)
- オフィス系ソフト
- 回答数2
- ありがとう数11
- みんなの回答 (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/7940)
簡易版です。 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冊買って勉強はしているつもりですが、 自分自身応用力がないというか、 参考書の例を使って、自分が使うものに書き換える作業が 中々うまくできていません。 ご指導ありがとうございました。
関連するQ&A
- Excel マクロ データ集計
Excel マクロ データ集計 Sheet1にある情報を集計して、集計結果をSheet2に貼り付けるマクロを考えています。 「Sheet1」のA列、B列、C列が合致した場合に同じ商品とみなします。 C列で「新鮮」とついている場合には、商品名で一致させて、Sheet2の 同じ商品名のところに記載します。 「Sheet2」に貼り付ける際、「Sheet1」のA列は不要です。 どのようなマクロを作成すればよろしいでしょうか。 画像を添付します。 「Sheet2」は完成形です。
- ベストアンサー
- その他MS Office製品
- エクセルのシート名の取得方法
エクセルのファイルを2つ以上開いている場合、例えばAファイル上のシート1のセルにBファイルの全シート名を取得し、入力させることは可能でしょうか。アクティブファイルの全シート名取得のマクロはあるのですが、非アクティブファイルの全シート名をアクティブファイルのシートに入力させるという方法はなかなか参考になるものがありません。 わかる方教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロに関する質問です。
エクセル2010使用。 以下の動作をマクロで行いたいです。 「まとめ」という名前のシートを追加。 全てのシート(シート数は毎回違い、10~18くらいあります。シート名もバラバラです。 )のC列にあるデータ(データ数も毎回違います。)をすべて抜き出して、(C列のデータだけでいいです。他の列のデータはいりません。)追加した「まとめ」というシートのA列にまとめるというマクロを組みたいです。 どなたかご教示いただけないでしょうか?
- ベストアンサー
- Excel(エクセル)
- Excel 2007 マクロ 表の集計について
Excel 2007 マクロ 表の集計について 2つのシート(Sheet1とSheet2)の情報を集計して Sheet3に反映するマクロを考えています。 (1)Sheet1のC列、D列、E列とSheet2のC列が空欄の場合は Sheet3に反映しません。 (2)Sheet1のC列、D列、E列とSheet2のC列のいずれかに数値が 入っている場合にはSheet3に行を反映します。 ※Sheet3に反映する際に、Sheet1とSheet2のキー(A列)は 反映しません。 各Sheetの表は画像を添付します。 どのようなマクロを作成すればよろしいでしょうか。 マクロの超初心者です。 マクロのサンプルをご紹介頂けますでしょうか。
- ベストアンサー
- その他MS Office製品
- EXCELのマクロについて
EXCELのマクロについて質問させてください。 一覧シートから、職種別の各シートへ集計(貼り付け)が出来るような プログラムを作成したいのでやってみたところ、私の知識では上手く出来ませんでした。 お力をお借り出来ると幸いです。 具体的には、一覧シートへ入力後(毎月入力) 『A』 『B』 『E』と分かれた職種別の各シートへ職種別かつ氏名の昇順でソートが掛かった状態で 貼り付け?集計?が出来るようにしたいです。 一覧シートのB列には「A・B・E」のどれかの職種が入力されており 氏名はD列E列へ記載しています。(漢字、カナ表示) A~AD列までデータを記入していますので、全て各シートへ集計出来ると嬉しいのですが・・・ 行は8行目から記載してます。 上記のようにプログラムを組む事は可能でしょうか。 具体的なプログラムも載せて頂けると嬉しいです。 宜しくお願い致します。
- ベストアンサー
- Visual Basic
- Excelのシート名の取得について
Excelのシート名の取得について セルの式でシート名を取得することはできますか? ページヘッダーやフッターでは &[シート名] を指定すると、シート名が取得できますが、 セルの式で =&[シート名] などと入れてもエラーになるのですが、マクロを使うなどしなければシート名は取得できませんか?
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロでファイルのシート名一覧を取得したい
特定フォルダ内にエクセルのファイルが複数あります。 エクセルのファイル名の取得は「Filesearch」を使い取得出来ました。 更にそのファイルの中にあるシート名を取得し、シート名の一覧を ワークシートに貼り付けたいと考えています。 よろしくご教授ください。
- ベストアンサー
- オフィス系ソフト
- エクセルで別ファイルのシートの貼り付けマクロ
マクロ初心者です。よろしくお願いします。 excelファイルのシートに同じシート名csvファイルのデーターの貼り付けをしたいのです。 ↓詳しくは。 excelファイルがあります。(ファイル名:全社) シート名=集計、1、2、3、4、5、6、7、8、9、10(固定) csvファイルがあります。1~始まり数は変動(1~3だったり、1~7とか) 1ファイル=1シート、ファイル名とシート名は同じ excelファイルのシート(1~10)に、開いたcsvファイルの同じシート名(1~10)のデータを貼り付けたい。 毎回コピー・貼り付けの繰り返し作業なので、マクロ作成を試しているのですが、うまくいきません。 教えてください。お願いします。
- 締切済み
- その他MS Office製品
- 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ
複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル 複数シートのデータを1シートにまとめるマクロ
エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。 【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。 【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)
- ベストアンサー
- オフィス系ソフト
お礼
迅速な答えありがとうございます。 今やってみましたが、うまくいきました。 本当に助かりました。