エクセルのマクロで営業所ごとにデータをまとめる方法

このQ&Aのポイント
  • エクセルのマクロを使用して、営業所ごとにデータをまとめる方法について教えてください。
  • A列に入っているデータを営業所ごとに抽出し、雛形シートにコピーしてシート名を営業所名にしたいです。
  • 手作業で行っている処理を自動化するために、マクロを使いたいです。具体的な手順を教えてください。
回答を見る
  • ベストアンサー

マクロについて

エクセルのマクロについて質問です。 シート1にデータが入っており A列に入っているデータを営業所ごとにまとめて抽出し 雛形シートをコーピーしてデータを貼り付け、シート名をA列の営業所名にしたいのですが 可能でしょうか? 例えば  A列       B列  C列   東京営業所  30個  500円  大阪営業所  10個  200円  東京営業所  5個   100円 ↓↓↓  A列       B列  C列   東京営業所  30個  500円  東京営業所  5個   100円   シート名 東京営業所 ---------------------------------------  A列       B列  C列   大阪営業所  10個  200円   シート名 大阪営業所 毎回手作業で、どなたか教えていただけますと助かります。

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

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

データの入っているSheet1と、ひな形にする雛形シートを用意します 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim r as long  on error goto errhandle ’コピーする  for r = 2 to worksheets("Sheet1").range("A65536").end(xlup).row  worksheets("Sheet1").cells(r, "A").resize(1, 3).copy _  worksheets(worksheets("Sheet1").cells(r, "A").value).range("A65536").end(xlup).offset(1)  next  exit sub errhandle: ’シートを用意する  worksheets("雛形").copy after:=worksheets(worksheets.count)  activesheet.name = worksheets("Sheet1").cells(r, "A").value  resume end sub ファイルメニューから終了してエクセルに戻る ALT+F8で実行する。

mina1124
質問者

お礼

keithin様 今帰宅してきましたので、明日実行してみたいと思います。 遅い時間にご回答ありがとうございます。 助かりますm(__)m

その他の回答 (3)

回答No.4

'各シートの先頭は見出し 'レコードは1行以上必要 Sub JournalizeSheet() Dim kk As Long Dim MaxRow As Long Dim strSheet As String Dim OldSheet As Worksheet Dim NewSheet As Worksheet Dim xNewSheet As Boolean Application.ScreenUpdating = False Application.DisplayAlerts = False Worksheets("sheet1").Activate MaxRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row For kk = 2 To MaxRow strSheet = Worksheets("sheet1").Range("A" & kk) If (strSheet = "") Then Exit For Set OldSheet = ActiveSheet xNewSheet = True For Each OldSheet In Worksheets If OldSheet.Name = strSheet Then xNewSheet = False End If Next If (xNewSheet) Then Worksheets.Add after:=Worksheets(Worksheets.Count) ' On Error Resume Next ActiveSheet.Name = strSheet Set NewSheet = ActiveSheet Worksheets("sheet1").Rows(1).Copy NewSheet.Range("A1").PasteSpecial Else Set NewSheet = Worksheets(strSheet) End If ' OldSheet.Activate Worksheets("sheet1").Rows(kk).Copy NewSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Next kk Epilogue: Worksheets("Sheet1").Select Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub

mina1124
質問者

お礼

JazzCorp様 ご回答ありがとうございます やり方がこんなに沢山あるとは思わず 凄くびっくりしました。本当にありがとうございます!!

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

あ、すいません。補足です。 1行目に「項目列」が存在すると仮定したコードです。 ご注意くださいませ。

mina1124
質問者

お礼

tsubuyuki 様 早速の回答ありがとうございます!! マクロ初心者なもので、ちんぷんかんぷんです。 ActiveSheet.Name = strSheetの所でエラーになってしまうのですが どうしたら良いのでしょうか。。 ちなみに、雛形シートと言うのをコピーしてA7にデータを貼り付けたいのですが お助けいただけますと助かります。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

少々くどいコードになってしまいましたが、一例として。 Sub test() Dim i As Integer Dim MaxRow As Integer, TagRow As Integer Dim strSheet As String, ExSheet As Worksheet Dim ConSheet As Integer Dim OldSheet As Worksheet, NewSheet As Worksheet  MaxRow = Range("A1").End(xlDown).Row   For i = 2 To MaxRow    ConSheet = 0    strSheet = Range("A" & i)    Set OldSheet = ActiveSheet    For Each ExSheet In Worksheets     If ExSheet.Name = strSheet Then      ConSheet = ConSheet + 1     End If    Next    If ConSheet = 0 Then     Worksheets.Add after:=Worksheets(Worksheets.Count)     ActiveSheet.Name = strSheet     Set NewSheet = ActiveSheet     OldSheet.Rows(1).Copy     NewSheet.Range("A1").PasteSpecial    Else     Set NewSheet = Worksheets(strSheet)    End If    OldSheet.Rows(i).Copy    NewSheet.Range("A65535").End(xlUp).Offset(1).PasteSpecial    OldSheet.Activate   Next i End Sub 以上、参考までに。

関連するQ&A

  • こんなことマクロで出来ますか

    普段は簡単なマクロしか使ったことありませんが以下のようなことって出来るのでしょうか? まず、 2つのファイルがあります。<A・B> <A>は入力用として(データ)や(雛型)で入力した情報が<B>に閲覧用としてリンクされています。 <A>の(データ)に開催会場のデータ(札幌、東京、大阪、福岡)を入力すると <B>に列ごとにリンクされます。 <B>:A1 札幌 B1 東京 C1 大阪 D1 福岡 マクロボタンをクリックすると <A>の(雛型)を新しいブックにコピーして各開催会場ごとのファイル名がつきます。<C>:札幌~<F>:福岡 <C>:札幌で入力したデータが<B>のA列へ <D>:東京のデータは<B>のB列へ   :   : それぞれ会場ごとのファイルが<B>の列ごとにリンクします。 このようにセルに入力したものがファイル名となって新しいブックを作り、そのデータを別のファイルの列ごとにリンクする…なんてことは出来ますか?

  • マクロについて教えてください

    エクセルで作った表のマクロを作りたいと思っています。 抽出した新規のデータと更新データを比較して、 重複することのないデータを作りたいのです。 抽出したデータのファイル名は、どちらも「EXCELデータ」となっています。 シート名はどちらも「データ」です。 表はどちらのシートとも、A列からJ列まであります。 (データの並び順は同じです。) 両方のシートから、下記1~3の条件のデータを取り出して、 新しいシートに書き出したいと思っています。 A     B   C     D      E    F    G     H   I    J 番号 名前 区分 ジャンル 決定日 締切日 コード 社名 価格 区分 1 C列とG列を削除する 2 J列に「1」が記入してあるものを抽出する 3 B列に「初回」と言う文字が含まれているものを、抽出する。 新規分と更新分のデータをA列で比較し、 重複しているものについては色をつける。 というようなものを作りたいのです。 出来れば、ファイルやシートの名前を変えないで作りたいのですが、 変更をすることも可能です。 どなたか教えてください。宜しくお願いします。

  • excel2000マクロ記述方法

    抽出条件方法のマクロ記述 1つのファイルのシートの中にデータがあります。 例ファイル名a.xlsシート名マスター     B列 C列   D列    E列 項目名 倉庫  翻訳  ソート  非表示項目     A057 レオナ工場  1     A870 セ新港    2    Y     A887 セ日向    3 もう1つのファイル 例ファイル名B.xlsシート名WORK     A列   B列   c列    d列    E列    連結コード  品名  倉庫 出荷1  加工1  AA 0G120 0G120  A870 0 0 0 AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0 抽出条件方法 シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して 非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい 場合のマクロ記述の方法を教えてください。よろしくお願いします。 (抽出表示方法) AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0     

  • Excel2000マクロ

    お世話になっております。 マクロのことで教えてください(マクロ初心者です(^_^;)) A列・・日付 B列・・時刻 C列・・数値データ “時刻”が2秒おきのデータなので1分おきのデータを抽出したいので、D列にSECOND関数を使って秒だけを抜き出し、 オートフィルタで“0”だけを抽出し、これで1分おきのデータを抽出し、 B列がX軸でC列がY軸のグラフを作ります。 これをマクロで記録して自動的にやりたかったのです。 ですが、 「D列にSECOND関数を使って秒だけを抜き出し、 オートフィルタで“0”だけを抽出し、これで1分おきのデータを抽出し、・・」 のところは、うまくマクロで自動化できるのですが、 別シートに出来たグラフを見ると、一番最初に記録して作ったグラフがそのまんまできてしまいます。 次のデータでグラフをつくりたかったのですが。。 これはどうしてでしょう? グラフまではうまくできないのでしょうか?

  • 検索・抽出・貼り付けのマクロ

    シート1のデータをオートフィルターかけて検索し抽出したものを、A列、B列、D列、F列をシート2の、A列、B列、C列、D列に貼り付けるマクロを教えて頂けますでしょうか? 一週間位悩んでいます。

  • EXCELでコマンドボタンを使用したマクロ

    EXCEL2003を使用しています。 A列にプロジェクト名、B列以降の列にデータが入っています。 A列のプロジェクトについて、ランダムに担当者が10名います。その担当者名はどこのセルにも記載していません。必要ならば別シートに記載してもOKです。 担当者名の列をどこかに挿入し、その担当者名で並べ替えることはしません。 今あるシートを、各担当者がデータを入力し易くしたいのです。 例えば、マクロのコマンドボタンを使って、各担当者にIDをつけ、そのIDを入力後ボタンを押したら、A列のプロジェクトが抽出されるシートを作成したいのですが、 マクロを教えてください。 例) 【現在のシート】 A列(プロジェクト名)B列 C列  D列  … さかな       100  100  300  … 野菜        500  650  200  … くだもの      200  150   90  … 鍋         80   200  500  … 鉄板焼き      800  400  700  … : 【定義】 A氏担当プロジェクト=さかな、鍋 B氏担当プロジェクト=野菜、鉄板焼き C氏担当プロジェクト=くだもの ID A氏=111 B氏=222 C氏=333 【作成したいシート】 111を入力後、コマンドボタンを押したら、 A列(プロジェクト名) B列  C列  D列  … さかな        100  100  300  … 鍋          80   200  500  … が抽出される。 解りにくいかもしれませんが、ご回答の程よろしくお願いいたします。

  • エクセルのマクロを知りたい

    エクセルで,たくさんのデータが入力された【シートa】があります。 新しく【シートb】を作成して,そこに空白の表(1)~(10)までを作成します。 (ちなみに表(1)は1行から始まり100行まで,表(2)は101行から始まり200行まで・・・・といった感じです) 【シートb】の表(1)には,【シートa】でA列に「1」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。同様に,表(2)には,【シートa】でA列に「2」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。・・・というのを表(10)まで続けます。 上記のような命令をボタン一つで操作できるようなマクロを教えて欲しいのです。 お願いします。

  • EXCLEのマクロ 2つのシートを統合する方法

    下記のことを行いたいのです。 教えていただけないでしょうか。 下記2つのシートをA列をキーにして sheet1のあ、b、c列のデータに sheet2のc、d列を 統合して、sheet1のdれつ e列に統合して5列のデータを作りたい a列とb列のデータは基本同じですが、スペースが入っていたり 違う場合もある。B列はsheet1のデータを採用 sheet2は不要 ・sheet1 a列 b列 C列 123 ああ 123456 456 いい 125456 789 うう 12344556 1234 ええ 12345678 4567 おお 123456456 8945 かか 1234567844 ------------------- ・sheet2 a列 B列 C列 D列 123 ああ 03-5212-0000 東京都○ 456 いい 06-5212-0000 大阪府○ 789 うう 044-5212-0000 神奈川県○ 1234 ええ 045-512-0000 横浜市○ 4567 おお 043-212-0000 埼玉県○ 8945 かか 03-5212-0000 東京都○

  • Excel マクロ データ集計

    Excel マクロ データ集計 Sheet1にある情報を集計して、集計結果をSheet2に貼り付けるマクロを考えています。 「Sheet1」のA列、B列、C列が合致した場合に同じ商品とみなします。 C列で「新鮮」とついている場合には、商品名で一致させて、Sheet2の 同じ商品名のところに記載します。 「Sheet2」に貼り付ける際、「Sheet1」のA列は不要です。 どのようなマクロを作成すればよろしいでしょうか。 画像を添付します。 「Sheet2」は完成形です。

  • エクセルでのVBA(マクロ)が出来ますか?

    帳票の整理で困っています。 以下のようなデータがシート1に入力されています。   A  B   C    D   E    F  1名前 住所 請求書 納品書 領収書 到着確認書 2山田 東京  ○       ○ 3井上 千葉      ○   ○    ○ 4植田 大阪      ○   ○ 5境  秋田  ○   ○ 6大田 沖縄  ○   ○   ○    ○ 7野原 埼玉          ○ データの”○”は書類が確認済で、空白は未確認あるいは未到着です。 "C"列から"F"列の中で1つ以上空白のあるデータを検索して別シート2へそのままコピー出来るマクロ、そしてシート2に表示されたデータで空白となっている"C"列から"F"列の項目名(請求書等)をシート3に用意してあるあいさつ文の書類名入力セル(ここではE10としておきます)に記入できるマクロがさっぱり分かりません。 データ件数は1000件以上になるかと思います。 どなたかお助けください。

専門家に質問してみよう