• ベストアンサー

EXCEL マクロ

コード 住所 電話番号・・・・ 1_東京_03 1_大阪_06 1_静岡_054 2_愛知_052 2_岐阜_058 2_三重_059 シート名:コード1 コード 住所 電話番号 1_東京_03 1_大阪_06 1_静岡_054 コード 住所 電話番号 シート名:コード2 2_愛知_052 2_岐阜_058 2_三重_059 コードごとに行全体を新規シートに貼り付けはマクロで出来るでしょうか? 手作業では膨大な時間が掛かるため、出来ればと思います。

  • sskj
  • お礼率24% (75/303)

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

行全体のコピーが必須なら以下は読み飛ばしてください。 データ部分の値だけを新規シートに貼り付けるのでも構わないなら、 見出しがある事、またA1セルから連続領域がデータ部分となっている事、 が前提ですが、 A)[フィルタオプションの設定]AdvancedFilterメソッドを使う方法 まず、キーとなるデータのユニーク値をAdvancedFilterを使って取り出し、 そのユニーク値をLoopし、それぞれ検索条件に指定して新規シートに抽出します。 作業列としてIU:IV列を使います。 Sub try_1()   Dim r As Range   Dim ri As Range   With ActiveSheet     .Columns(1).AdvancedFilter Action:=xlFilterCopy, _                   CopyToRange:=.Range("IU1"), _                   Unique:=True     .Range("IV1").Value = .Range("IU1").Value     Set r = .Range("A1").CurrentRegion     For Each ri In .Range("IU2", .Cells(.Rows.Count, "IU").End(xlUp))       .Range("IV2").Value = ri.Value       r.AdvancedFilter Action:=xlFilterCopy, _                CriteriaRange:=.Range("IV1:IV2"), _                CopyToRange:=Sheets.Add.Cells(1), _                Unique:=True     Next     .Columns("IU:IV").Delete   End With      Set r = Nothing End Sub B)[ピボットテーブル]ShowDetailプロパティを使う方法 PivotTableでキーとなるデータを基準にダミー集計し、 それぞれの集計行で[詳細データの表示]をすると新規シートにデータが抽出されます。 作業列としてIU:IV列を使います。 Sub try_2()   Dim r As Range   With ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _                     SourceData:=Range("A1").CurrentRegion.Address(external:=True)) _                     .CreatePivotTable(TableDestination:=Range("IU1"))     .PivotFields(1).Orientation = xlRowField     .PivotFields(1).Orientation = xlDataField     .ColumnGrand = False     For Each r In .DataBodyRange       r.ShowDetail = True     Next     .TableRange2.Clear   End With End Sub 2つのコードとも標準モジュールに置いて、データがあるシートをActiveにして実行します。

sskj
質問者

お礼

ありがとうございます。 書いてあることの半分程度しか理解できませんが、作成できました。 ありがとうございました。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

出力先のシートは作成しておいて下さい 元データのシート名が無いので「sheet1」としています コードの数値を文字列「コード」の後に付加して それを出力シート名としてコピペするだけのマクロ Sub test() Dim i As Long With Worksheets("sheet1") For i = 2 To .Range("a65536").End(xlUp).Row .Cells(i, 1).Resize(1, 3).Copy _ Worksheets("コード" & .Cells(i, 1).Value).Range("a65536").End(xlUp).Offset(1) Next i End With End Sub 参考まで

sskj
質問者

お礼

回答ありがとうございます。 実行しますと、なぜか3列分しかコピーされないようです。 エラー"9"がでます。 すべてのシートを作成していないからだと思いますが・・・ 改善できるマクロの知識がないので手作業でやりたいと思います。 ありがとうございました。

関連するQ&A

  • エクセル

    いつもご回答いただきありがとうございます。 エクセルで分からないことがありますので、質問させてください。 下記のようにA列には都道府県名が順不同で入力されており、 B列にA列にある都道府県を1つずつ書き出したいのですが、そのよう な関数はありますでしょうか? A      B -------------------- 愛知県   愛知県 岐阜県   岐阜県 愛知県   三重県 三重県   東京都 三重県   静岡県 東京都    愛知県    三重県    静岡県    東京県    東京県    愛知県    静岡県    わかりにくくて申し訳ありませんが、よろしくお願いします。

  • 「都市再生特措法」について

    愛知県は、三重県、岐阜県、静岡県の中では、事実上、一番格上の存在になるでしょうか?また、東京、大阪、神奈川に匹敵する都市になるでしょうか?

  • エクセルマクロについて教えて

    マクロか関数かわかりませんがよく番号を入力すると(例)名前や商品名がでてきますがそれを作りたいのですがなかなかわかりません。マクロで自動記録でコピーして貼り付けでもいいかなと思い試したのですが貼り付けは列と行を指定しないと駄目?できませんでした。 アドバイスお願い致します。

  • 集計表を作成するマクロについて

    「1日」のシート   A    B    C    D     E 1 車両番号 出発場所 到着場所 商品コード 数量 2 1    東京   大阪   L     10 3 2    北海道  東京   M      5 4 3    東京   北海道  L     17  5 4    福岡   東京   N      8 「2日」のシート   A    B    C    D     E 1 車両番号 出発場所 到着場所 商品コード 数量 2 1    大阪   東京   K      8 3 2    東京   愛知   L      7 4 3    福岡   大阪   N     17  5 4    北海道  千葉   N     13 上記のように「車両番号」「出発場所」「到着場所」「商品コード」「数量」の情報が入ったシートが日別に1枚ずつあり、月間で28~31枚が1つのファイルに入っています。 このファイルで、新しいシートを追加して、日別の車両情報の一覧を作成したいのですが、どのようにしたらよいのか教えていただけませんか? 以下の条件で作成したいと思います。 1.「A1」から「E1」を新しいシートの「A1」から「E1」に貼り付ける。 2.シートの「車両番号」に数字が入っている行をそのままコピーして、新しいシートに貼り付けていく。その際に、コピー元のシート番号が入ればありがたい。(無くても可) 3.日別の車両情報をスペースは開けずに下に続けて貼り付けていく。 4.月ごとに日数が異なるので、車両情報が投入されているシートのみを貼り付ける対象としたい。 以上です。 次のように表示されるようになると嬉しいです。   A    B    C    D     E  F 1 車両番号 出発場所 到着場所 商品コード 数量 参照シート名 2 1    東京   大阪   L     10 1日 3 2    北海道  東京   M      5 1日 4 3    東京   北海道  L     17 1日 5 4    福岡   東京   N      8 1日 6 1    大阪   東京   K      8 2日 7 2    東京   愛知   L      7 2日 8 3    福岡   大阪   N     17 2日 9 4    北海道  千葉   N     13 2日 これが出来れば、手で「コピー・貼り付け」をしていくよりも入力ミスが少なくなりそうです。 よろしくお願いします。

  • エクセルでマクロか関数を使って住所録を作りたい。

    エクセルでマクロを作りたいのですが、 シートを2つ使い 1枚目のシートに項目が、住所 氏名 電話番号・・・・ 一枚目のシートにデータを入力し 登録ボタンをおすと 二枚目のシートにデータがどんどん蓄積されていき、住所録ができるマクロを組みたいのですがやり方がわかりません。(1枚目のシートのデータは次の入力時に上書する。) また、関数でもできるのでしょうか? マクロの基礎の本を購入し、読みみましたが、マクロに関してはほとんど素人です。詳しい方、ご回答をお願いします。

  • エクセルのデータベースで参照・貼り付け

    エクセル2003で、データベースを作成してあります。 別のシートに、コードを入力すると、データベースを参照して関連の項目を貼り付けるという作業したいと思っています。 例 シート2にデータベース住所録を作成。 [コード][氏名][住所][電話]... シート1の[A]列にコードを入力すると、データベースから氏名をコピーし[B]列に貼り付け...[C]列に住所... ※貼り付けたデータを後で編集したいため、貼り付けで行いたいと思います。 ※マクロではなくて、関数で行いたいと思います。 ※実際には住所録ではなくて、在庫管理です。 よろしくお願いいたします。

  • セル移動マクロについてご教示下さい。

    市町村別の住所録を作成していますが、次のようなマクロが出来れば新たな住所の入力を するのに便利になると、質問させていただきました。 シート1に市町村名を、シート2に市町村毎の住所録を入力しています。 シート1のB列に入力している市町村名をクリックすれば、シート2のC列に入力している 市町村名にセル移動するようなマクロは可能でしょうか。 マクロはコードの張り付け程度しか出来ない超初心者です。 どなたか、よろしくお願いいたします。

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

    excel、マクロについて教えてください。 excelのマクロでシートを追加してシート名を変更し棚卸しに変更する内容を記録したのですが、 excelをずっと使用していてシートを追加していくとsheet1、sheet2と語尾の数字が増えていってしまい、マクロが正常に動作しません。 excelのシートを追加した際に必ずsheet1で追加する方法、若しくはマクロを記録した時はsheet1の名前を変更だったがsheet2でもsheet3でも動作するようなコードは存在しますか? 最近マクロをやり始めた初心者なので、質問が下手かもしれませんがどなたかお分かりになりましたら 教えていただけませんか?よろしくお願いします。

  • 複数のシートから該当セルをアクティブにするマクロ

    インプットボックスなどに郵便番号、もしくは電話番号を入力し、 それに該当する部分がアクティブになるようなマクロを組みたいと思います。 会社名、住所、電話番号などを記載したデータが、 いくつかのシートに分かれて管理されています。 会社が10件ほど記載されているシートもあれば、 40件ほど記載されているシートもあります。 探すのが大変なので、 郵便番号や電話番号などを入力すれば、 該当のシート、該当の会社の場所に飛ぶようなマクロを作成したいのですが・・・ 詳しい方がいらっしゃれば、教えてください。 よろしくお願いします。

  • excelでマクロを使用した連続印刷について

    A2セルから通し番号、氏名、住所等のデータが入力されている「データ」シートがあり、 VLOOKUPを使用してB3セルに「データ」シートのA列にある「通し番号」を 入力すると氏名・住所等が反映される「印刷」シートがあります。 例えば「データ」シートのC列(住所)に「東京都」という文字列が 含まれている宛名のみを連続で印刷したい場合、 どのようなマクロになりますでしょうか? (マクロ内に「東京都」と指定する方法と、 シート内の特定セルに入力した文字列で指定する方法が ありますでしょうか?) wordでの差し込み印刷や、宛名ソフト等の使用は考えておりません。 よろしくお願いいたします。

専門家に質問してみよう