• ベストアンサー

EXCELVBA データを自動で別シートにわける

お世話になります。 昨日も同じよう質問にご回答いただいての、再度の質問で大変縮なのですが。。 添付の様な表があります。 このシートのどこかに「ボタン」を作成してこのボタンを押すと、支店(B列)毎に支店名が付いたシートを作成して、それぞれのデータも該当支店のシートへコピーペーストしたいのです。 どなたかお知恵をお借りできませんでしょうか。 恐れ入りますが、よろしくお願い致します。 環境 EXCEL2013  Windows7

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

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

同じ手順で標準モジュールを用意、下記をコピー貼り付ける sub macro2()  dim h as range  on error goto errhandle  worksheets("元データのシート名").select  ’2度目。シート名は? ’転記する  for each h in range("B2:B" & range("B65536").end(xlup).row)   h.entirerow.copy worksheets(h.value).range("A65536").end(xlup).offset(1)  next  exit sub errhandle: ’支店名シートを新調する  worksheets.add after:=worksheets(worksheets.count)  activesheet.name = h.value  worksheets("元データのシート名").range("1:1").copy range("A1")  resume end sub シートにボタン絵柄を作成し、右クリックしてマクロを登録する。

yakkun2338
質問者

お礼

keithinさん、ご連絡ありがとうございました。 何度もご丁寧なご説明ありがとうございました。 おかげさまで今回も希望通りの集計ができました。 本当にありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です。 >このシートのどこかに「ボタン」を作成してこのボタンを押すと・・・ を見逃していました。 メニュー → 開発 → 挿入のアイコン → ActiveXの「コマンドボタン」が良いと思います。を挿入 → そのコマンドボタン上でダブルクリック >Private Sub CommandButton1_Click() と >End Sub の間に 前回のコードの >Sub Sample1() 'この行から と >End Sub 'この行まで 以外をコピー&ペースト → デザインモードを解除して、コマンドボタンをクリックしてみてください。 ※ 別にコマンドボタンでなくても、オートシェイプ等を使って「マクロの登録」でも可能です。 どうも失礼しました。m(_ _)m

yakkun2338
質問者

お礼

tom04さん、ご連絡いただきまして誠にありがとうございます!! 希望通りの動きが出来ました!! 本当にありがとうございました。 いつも詳細なご説明いただきまして誠にありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 標準モジュールにコピー&ペーストしてマクロを実行してみてください。 尚、元データはSheet1(Sheet見出しの一番左側にあるとします) Sub Sample1() 'この行から Dim i As Long, k As Long, wS As Worksheet Application.ScreenUpdating = False If Worksheets.Count > 1 Then Application.DisplayAlerts = False For k = Worksheets.Count To 2 Step -1 Worksheets(k).Delete Next k End If Worksheets.Add after:=Worksheets(1) Set wS = Worksheets(2) With Worksheets(1) .Range("B:B").AdvancedFilter , Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True For i = 2 To Worksheets(2).Cells(Rows.Count, "A").End(xlUp).Row Worksheets.Add after:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = wS.Cells(i, "A") .Range("A1").AutoFilter field:=2, Criteria1:=wS.Cells(i, "A") .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Worksheets(Worksheets.Count).Range("A1").PasteSpecial Paste:=xlPasteAll Next i .AutoFilterMode = False wS.Delete Application.DisplayAlerts = True .Activate .Range("A1").Select End With Application.ScreenUpdating = True End Sub 'この行まで ※ 一旦Sheet1以外は削除するようにしていますので、 念のため、別Bookでマクロを試してみてください。m(_ _)m

関連するQ&A

  • Excelにてシート1のデータをシート2の集計表に反映させるには?

    今、Excelにて売上集計表を作成しているのですが、 シート1にその月の各支店毎の売上を打ち込み、 それを、コマンドボタン(フォームのボタンでもいいのですが、) を押すと、シート2のその月の列にコピーされるというプログラムを 組みたいのですが、どうやれば良いのでしょうか? シート1は毎回X列を打ち変える(実際には間の各個人売上を打ちかえるのですが...)というシートで シート2はJ列から順に4月、5月・・となっている表です。 シート1はこうです。     A ・・    X    Y  ・ ・ ・ 1          4月 2 大阪支店   220万 ・ 8 奈良支店   150万 ・ 14 京都支店  180万 ・ 20 神戸支店  200万 ・ 26 滋賀支店  110万 ・ 32 岐阜支店  140万 ・ 38   計      1000万 ・ ・ という感じで入れて、X1の月を変えて(形式表示を変えているので実際の入力は数字のみです)、 コマンドボタンを押すと、シート2のその月の列(4月ならJ列8月ならN列という感じ)に 各支店の数字がコピーされるという仕組みが作りたいのです。 C~Wの間には個人別の売上が記載されており、 その累計をSUM()で出して、X列に記載しています。 行については、セル数も結合方法も、 シート1,シート2共に同じにしてあるので X列をそのまま値だけをコピーすれば移るのですが、 なにぶん使用するのがExcelに不慣れな不特定多数の方が使用し、 しかも「形式を選択して貼り付け」の「値」にチェックを入れてもコピー出来ず、 「値と数値の書式」をチェックしないとコピー出来ないので (なぜだか分かりませんが...。)誰にでもすぐ使える方法が一番いいのです。 よって、シート1にコマンドボタンを置き、 それを押せばコピーされる方法があれば教えて下さい。 関数でそれが可能なのであればそれでもいいですし、 他にいい方法があれば教えて下さい。 宜しくお願い致します。

  • EXCEL VBA 自動でシート分け後に集計したい

    お世話になります。 添付の様な表があります。 この表のどこかに「集計」というボタンを作成して、ボタンをクリックすると矢印右図のように支店別にシートを分けて、さらに担当セールス毎になっていた売上金額を合計して集計したいのです。 当方素人で、大変申し訳ございませんが、どなたかロジックをご教授いただけませんでしょうか。 よろしくお願い致します。 環境 EXCEL2013     Widdows7

  • 条件に合う特定の項目を別シートに集計

    excelの表作成につき、ご教示願います。別シートに以下のような条件で特定の項目を抽出して表を作成したいのですが、どのようにすればよろしいでしょうか。 1.sheet1に全店の担当者別の成績進捗表があります。 2.その進捗表のJ列に予算達成までの残額が入っています。 3.例えば、予算達成までアト1,000万以内の担当者について、sheet2に、その担当者名(sheet1のB列)、所属の支店名(sheet1のE列)、予算までの残額(sheet1のJ列)のみ抽出した表を作成。 つまり、予算達成まで間近な担当者と担当者ごとの残額をまとめた表を作成しようとしています。 因みにWindows7でexcel2010です。 何卒よろしくお願いいたします!

  • 1シート内にまとめられているデータを分割してコピーし、それを別の複数の

    1シート内にまとめられているデータを分割してコピーし、それを別の複数のシートにペーストする方法があれば、教えて下さい。 例えば、学校の成績を、教科ごとに表示するシートから、生徒ごとに表示するシートへとデータをコピーする、なんていう場合を想定して下さい。 <教科のシート> シート1:国語のテストの点数表(生徒1~3の点数の一覧) シート2:数学のテストの点数表(生徒1~3の点数の一覧) シート3:英語のテストの点数表(生徒1~3の点数の一覧) <生徒のシート> シート101:生徒1の英数国の点数 シート102:生徒2の英数国の点数 シート103:生徒3の英数国の点数 という場合、 シート1から、生徒1の国語の点数をコピーし、シート101へペースト。 シート1から、生徒2の国語の点数をコピーし、シート102へペースト。 シート1から、生徒3の国語の点数をコピーし、シート103へペースト。 シート2から、生徒1の数学のテンスをコピーし、シート101へペースト。 シート2から、生徒2の数学の点数をコピーし、シート102へペースト。 シート2から、生徒3の数学の点数をコピーし、シート103へペースト。 シート3から、生徒1の英語の点数をコピーし、シート101へペースト。 シート3から、生徒2の英語の点数をコピーし、シート102へペースト。 シート3から、生徒3の英語の点数をコピーし、シート103へペースト。 という具合に、コピー・ペーストを『自動化』して、行いたいのですが、 このようなことは可能でしょうか? (実際のデータは、教科数も生徒数も、もっと沢山あります。) 方法としては、マクロ(VBA)を利用したものでも結構です。 どなたかお詳しい方、お力をお貸し下さい。 必ずお返事致します。(ポイント付与も確実に行います。)

  • シートに張り付けたボタンがシートのコピーで消える。

    Excel2003で作成した図書館員の当番表でマクロで当番表を自動作成させています。 サンプルとして用意した当番表のシートを実際の月当番表を作成するときに、シートのコピーをして作成します。シートはコピーされたのですが、そのシートに張り付けた印刷ボタン(クリックすると自動印刷)が今まで一緒にコピーされたのですが、コピーされません。 マイクロソフトの前回の問題と関係するのでしょうか? コピーされていた古いファイルでしても同様です。

  • Excel シートを自動作成、セル値をシート名に 

    エクセルのマクロの自動記録で作業の効率化を図りたいのですがうまく出来ません、ご教示いただけ無いでしょうか。 (VBAは初心者です。本とネットを検索しながら作成していたのですが、 急きょファイルを作成しなければいけない状況になりました。) ■Excel2010 ■ブック詳細 ・Sheet"企業一覧" → 行ごとに企業名、シート名が記載された表があります。   A列 企業名   B列 シート名 ・Sheet"マスタ" → 見積書のフォーマットがあります。   A4 企業名  ■希望作業 シート「企業一覧」の企業ごとにボタンを作り、ボタンを押すと 1."マスタ(Sheet)"のコピーが作成され、 2.コピーされたシートのA4セルに"企業一覧(Sheet)"A列の企業名が記載され、 3.コピーされたシート名に"企業一覧(Sheet)"のB列のシート名が記載され、 4."企業一覧(Sheet)"のB列のシート名に新しいシートへのハイパーリンクを付け 5."企業一覧(Sheet)"に戻る ※下記作業ができません。 ・コピーされた新しいシートに、シート名が付けられない。 ・"企業一覧(Sheet)"のシート名にコピーされた新しいシートへのハイパーリンクを付けられない。 ※シートのコピーは可能なら"企業一覧(Sheet)"の企業名表記順に作成したいと思っています。 ※各企業行ごとにボタンを作るのは面倒なのですが、 企業名/シート名の表記がよく変更になるため、入力と同時にマクロが実行されるのではなく、 何かワンクッションを置きたいと思っています。 ※シートのコピー作成、企業名の記載までは出来たのですが、 その他の作業ができません。よろしくお願いいたします。 --------------------------- Sub Sheet作成() ' ' Sheet作成 Macro ' ' Sheets("マスタ").Select Sheets("マスタ").Copy After:=Sheets("マスタ") Range("A4:B4").Select ActiveCell.FormulaR1C1 = "=企業一覧!R8C1" Range("C4").Select Exit Sub End Sub --------------------------

  • ExcelVBA シートコピーについて

    何度か試行錯誤したのですが、何故かうまくいかないので質問させていただきます。 エクセルで 「A」という名のBook内にSheet1にある値を参照して該当する値を返すSheet2があります。(ここまではVlookup関数などで処理できます。) このSheet2を全く新しいBookにコピーしてブック名を「B」、シート名をSheet2のB1の値にします。 このシートBにBook「A」のSheet2のA1の値を変化させたもの(添付画像のの場合だとだと1~3)をBook「B」のSheetの末に1つずつコピーしたいと考えています。 最終形はBook「B」に「山田」~「高梁」までのデータがシートごとに集約されたものを作りたいのですが、Sheetの貼り付けををする際にエラーが出てうまくいきません。 つたない説明で恐縮ですが、どなたかお知恵を拝借できないでしょうか。

  • 条件にあうデータを別シートにコピーしたい。

    下記のようなデータがシート1にあります。  A  B  C  D  E   F 1支店 氏名 個数 〆  資格  成績 2大阪 田中 5  10     0 3大阪 小林 12 20 ×   100 4東京 佐藤 20 30     50 5東京 倉本 3  10 ×   0 6東京 野村 18 15     200 これを資格がD列【×】に該当するデータすべて、 E列【0】に該当するデータすべて を別シート2に一覧にしたいのです。 今回であれば  A  B  C  D  E   F 1支店 氏名 個数 〆  資格  成績 2大阪 田中 5  10     0 3大阪 小林 12 20 ×   100 4東京 倉本 3  10 ×   0 このようになるような結果にしたいのですが 毎回まずD列が【×】のデータだけを抽出して別シート3に貼り付け 次にE列が【0】のデータでかつ資格が【空白】のデータを抽出して シート3の最下部に張り付ける。 そして支店別に並び替える、という作業を繰り返していますが、 データの更新頻度が早くデータも約1000行あり順次増えていく予定です。 ですので更新のたびに一覧を作成するのに時間がかかり困っています。 何か良い方法があれば教えていただきたいのですが・・・ よろしくお願いします。 なお、例の最上段のABCDEFエクセルの列番号 最左列の12345はエクセルの行番号のつもりです。

  • 表のデータを各シートへ分類してコピーする方法

    表1のデータを名前ごとに作成したシートに日付と体温と血圧を自動でコピーすることはできますか。 現在は、Seet1のA列に日付、B列に名前、C列に体温、DとE列に血圧が入力されています。 例えば、吉田というシートを作成して置き、そこに日付と体温と血圧データを自動でコピーしたいと思っています。簡単にできる方法はありますか。 やはり、Seet1を日付と名前でソートをかけてから各シートへ手作業でコピーしていく方法しかないのでしょうか。 よい案がありましたらご教授よろしくお願いいたします。 サンプルの表を添付します。

  • エクセル シート名ごとコピー

    初めて質問します。 過去の質問を検索したのですが、見つけられなかったので教えて下さい。 毎月、15支店ほどのシートをひとつのファイルにまとめています。 新規シートを作り、 元シートを全て選択(全セル選択ボタン)コピー⇒ペーストして、 シート名だけ後で手動で付け直しています。 シート名ごとコピーすることはできるのでしょうか? よろしくお願いします!

専門家に質問してみよう