VBA初心者で勉強中です。
ご教授お願いします。
複数ブックの複数シートを各シートの特定セル(文字)を条件に、条件毎のブックにシートを振り分けるマクロをつくりたいと思っています。
【元データ】
Aブック
sheet1 セルF21佐藤
sheet2 セルF21山田
sheet3 セルF21木村
sheet4 セルF21後藤
sheet5 セルF21渡辺
Bブック
sheet1 セルF21木村 愛
sheet2 セルF21佐藤 太郎
sheet3 セルF21佐藤 太郎
sheet4 セルF21渡辺 健太郎
sheet5 セルF21鈴木 春香
※ ①ブックの名前・シート名の決まりがない。
②シート数は毎回変わります。
③条件とするセルF21の名前は名字とフルネームが あり、名字で被る人はいないので名字一致で処理したいと思っています。
【新規作成ブック】
佐藤ブック→Aブックsheet1,Bブックsheet2,Bブックsheet3
山田ブック→Aブックsheet2
木村ブック→Aブックsheet3,Bブックsheet1
※セルF21の名前に一致したブックにシートをコピー振り分けたいと思っています。
複数ブックの複数シートにおいて、セルの条件に合ったシートを選択し、別ブックにシート毎コピーする
マクロが思いつきません。
また、条件になる名前は固定の人(10名)になるのでリストを作成しといて処理していく方法が良いでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは
全部を一気にまとめて処理しようとすると混乱してしまうのなら、少し単純化して考えれば整理できると思います。
プログラムの作成も、ある単位に分けて作成してゆくようにすれば、考えやすくなると思いますし、デバッグもやりやすくなるのではないでしょうか。(若干、効率は落ちるかも知れませんけれど…)
例えば、10人のうち一人分だけ、該当するシートを集めてくる処理ができれば、それを10人に拡張するのはできそうですよね?
では、一人分を、一つの元データのブックから抜き出す処理(該当するシートが無いかも知れません)を作成できれば、それを元データの複数ブックに拡張することもできそうですよね?
ということで、「一人分のブックに、ある元データブックから該当するシートがあればコピーする」というものを作成することを最初の目標になっさってはいかがでしょうか?
そのほかに考え方のヒントをいくつか・・・
>①ブックの名前・シート名の決まりがない。
>②シート数は毎回変わります。
いずれにしろ、元データのブック内の全シートを順にチェックすれば済むのではないでしょうか?
>③条件とするセルF21の名前は名字とフルネームが あり~~
ご提示のようなセル内容であると限定できるのなら、文字列に空白が含まれれば、空白以前の文字だけを採用する。空白がなければ全部が苗字と判別する。
ということで良さそうに思えますが・・・
ついでながら、シートをコピペする際に、(新しく作成する)シート名をどのように決めるのかは不明ですが、元のシート名と同じにしようとすると被る可能性がありますので注意が必要です。
シート名は何でもよくて、内容さえコピペできれば良いというのであれば、あまり問題は無さそうですが。
>条件になる名前は固定の人(10名)になるのでリストを作成しといて~
全て苗字をID代わりにして識別するという考え方なので、どこかにリストを作成しておくか、あるいはプログラム中に直接配列などで定義しておいた方が便利だと思います。
(人数が10人と少ないということもあります)
個人のブックがどこにあるのか(path)も必要になりそうですね。
個人ブック群が同一フォルダ内にあって、それ以外のブックは無いというような条件が成立するなら、当該フォルダ内にあるブックを名前のリストと考えることも可能ですけれど・・・
fujillinさん
こんにちは。
アドバイスありがとうございます。
アドバイスいただいた通り、
一気に考えるのではなく、部分的に
マクロを考えて進めていきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) セルの値と同じ名前のシートのセルの結合を解除する方法を教えてください 3 2022/10/03 10:23
- Excel(エクセル) 【関数】【マクロ】データの転記の方法について 2 2023/07/26 15:22
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
Excel(2010)のフィルターが保...
-
WorkBooksをオープンさせずにシ...
-
vbaでpdfを開いて1ページ目のみ...
-
エクセルで参照しているデータ...
-
エクセルで別ブックをバックグ...
-
エクセルシートの一部を送りたい
-
VBAでブック保護非保護を判定す...
-
複数ファイルから特定シートの...
-
アクセスvbaでエクセルブックを...
-
エクセル2016です。「ブッ...
-
エクセルで開いていないbookの...
-
Excelで複数ブックの同一セルに...
-
困ってます!EXCELで2つ...
-
エクセルで複数のシートを別フ...
-
Excelでブックの共有を掛けると...
-
外部ブック参照が#REF!になって...
-
beckyに届いたメールをエクセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelで複数ブックの同一セルに...
-
VBA バックグラウンドで別ブッ...
-
エクセルで50行ごとに区切った...
-
エクセルで「ディスクがいっぱ...
-
エクセルにおける,「ブック」...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
-
ブックのピボットを別ブックに...
-
エクセルシートの一部を送りたい
-
エクセル2016です。「ブッ...
-
エクセルで別ブックをバックグ...
-
フォルダ内の複数ファイルから...
-
複数ファイルから特定シートの...
おすすめ情報