エクセルで大量のデータを一気に挿入する方法

このQ&Aのポイント
  • エクセルで大量のデータを一気に挿入する方法を教えてください。現在、10000件の住所データを1行おきにコピーした2行分のセルを挿入したいと考えています。
  • マクロやエクセルの機能などを利用して、10000件のデータを1行おきにコピーした2行分のセルを一気に挿入する方法を教えてください。
  • エクセルを使って大量のデータを一気に挿入する方法を知りたいです。10000件の住所データを1行おきにコピーした2行分のセルを挿入するための簡単な方法があれば教えてください。
回答を見る
  • ベストアンサー

膨大なデータ一行おきに二行分のコピーしたセルを挿入

エクセルが苦手で困っています。 エクセル、マクロに詳しい方教えて下さい。 10000件ある住所の一覧データに1行おきにコピーした2行分のセルを挿入したいのですが、 10000件を1件づつコピーしたセルの挿入を繰り返すのは気が遠くなりそうです。 一気にコピーした2行分のセルを1件おきに挿入する良い方法はありませんでしょうか? マクロやエクセルでの方法を教えて下さい! 【例】 番号 郵便番号 住所 名前 1 123-4567 ○○県○○市○○町 春本 春子 2 111-1111 △△県△△市△町       夏野 夏美 3 222-2222 □□県□□市□□町 秋田 秋夫 4 333-3333 ××県××市××町 冬川 冬彦 〃       〃               〃              〃 〃       〃               〃              〃 10000   〃               〃              〃 ↓ 番号 郵便番号 住所 名前 1 123-4567 ○○県○○市○○町 春本 春子 2013 5000 250 5250 0101 7000 350 7350 2 111-1111 △△県△△市△町 夏野 夏美 2013 5000 250 5250 0101 7000 350 7350 3 222-2222 □□県□□市□□町 秋田 秋夫 2013 5000 250 5250 0101 7000 350 7350 4 333-3333 ××県××市××町 冬川 冬彦 2013 5000 250 5250 0101 7000 350 7350 5  〃 〃 〃 20130101 5000 250 5250 0101 7000 350 7350 10000   〃 〃 〃 20130101 5000 250 5250 0101 7000 350 7350 10000件分コピーして挿入する内容は同じです。 ただ、コピーしたセルの1行目と2行目の並びは変えたくありません。 わかりづらい説明かもしれませんが、宜しくお願いします。

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

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

No.2・3です。 補足を何度読み返してもまだ、理解できていません。 >A列1行目「通し番号」2行目(コピー挿入したい)「年月」3行目(コピー挿入したい)「101」 >B列1行目「郵便番号」2行目(コピー挿入したい)「金額」3行目(コピー挿入したい)「金額」 >C列1行目「住所」2行目(コピー挿入したい)「消費税」3行目(コピー挿入したい)「消費税」 >D列1行目「名前」2行目(コピー挿入したい)「合計金額」3行目(コピー挿入したい)「合計金額」 と質問文にある、挿入後のデータはすべて同じ!を考えると ↓の画像のような感じになってしまいますが・・・ (これでは意味がないように思えますが、敢えてコードを載せてみます) ※ For~Nextでループさせるとデータ量が多い場合おそらく「応答なし」となると思いますので、 極力、Excelの機能を使ってやっています。 (並び替え・オートフィルタ等) Sub 行挿入3() 'この行から Dim endRow As Long, cnt As Long, myArray endRow = Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False Range("A:A").Insert With Range(Cells(2, "A"), Cells(endRow, "A")) .Formula = "=row()" .Value = .Value .Copy End With Do Until cnt = 2 cnt = cnt + 1 Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues Loop Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes endRow = Cells(Rows.Count, "A").End(xlUp).Row With Range(Cells(2, "A"), Cells(endRow, "A")) .Formula = "=IF(B2="""",IF(B1<>"""",1,2),"""")" .Value = .Value End With With Range("A1") .AutoFilter field:=1, Criteria1:=1 For cnt = 2 To 5 Range(Cells(2, cnt), Cells(endRow, cnt)).SpecialCells(xlCellTypeVisible) = Cells(1, cnt) Next cnt .AutoFilter field:=1, Criteria1:=2 myArray = Array("101", "金額", "消費税", "合計金額") For cnt = 2 To 5 Range(Cells(2, cnt), Cells(endRow, cnt)).SpecialCells(xlCellTypeVisible) = myArray(cnt - 2) Next cnt End With Range("A:A").Delete ActiveSheet.AutoFilterMode = False Application.ScreenUpdating = True MsgBox "処理完了" End Sub 'この行まで ※ データ量が10000程度だというコトですので、 そこそこ時間を要すると思います。m(_ _)m

megumilk0625
質問者

お礼

tom04さん 何度もご返答頂き本当に有難う御座います! わかりづらい説明で誠に申し訳なくおもっております。 質問に画像添付の仕方がわかりましたので、画像を追加してみました。 まずは、ご教授頂いたマクロで試したいと思います!! 有難う御座います。

その他の回答 (3)

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

No.2です。 >10000件分コピーして挿入する内容は同じです とありますが、質問文では >201350002505250 と 2013010150002505250 があり データが違いますよね? その辺があるので前回は敢えて挿入するデータを表示させていませんでした。 とりあえずA列だけに15桁で表示させるという前提だと、↓のコードにしてみてください。 挿入行のA列に 201350002505250 を 2行目に 010170003507350 を表示してみました。 1行目は項目行でデータはA列の2行目以降にあるとします。 Sub 行挿入2() Dim endRow As Long, cnt As Long endRow = Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False Range("A:A").Insert With Range(Cells(2, "A"), Cells(endRow, "A")) .Formula = "=row()" .Value = .Value .Copy End With Do Until cnt = 2 cnt = cnt + 1 Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues Loop Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes endRow = Cells(Rows.Count, "A").End(xlUp).Row With Range(Cells(2, "A"), Cells(endRow, "A")) .Formula = "=IF(B2="""",IF(B1<>"""",1,2),"""")" .Value = .Value End With With Range("A1") .AutoFilter field:=1, Criteria1:=1 With Range(Cells(2, "B"), Cells(endRow, "B")) .SpecialCells(xlCellTypeVisible) = "201350002505250" .NumberFormatLocal = "000000000000000" End With .AutoFilter field:=1, Criteria1:=2 With Range(Cells(2, "B"), Cells(endRow, "B")) .SpecialCells(xlCellTypeVisible) = "010170003507350" .NumberFormatLocal = "000000000000000" End With End With Range("A:A").Delete ActiveSheet.AutoFilterMode = False Application.ScreenUpdating = True MsgBox "処理完了" End Sub ※ あくまで憶測ですが、数値データはいくつかのセルに分けて表示するのではないでしょうか? とりあえずはこの程度で・・・m(_ _)m

megumilk0625
質問者

補足

tom04さん 誠に有難うございます。 こんなにも親切に教えて下さるとは思いもよらず、感動しております。 わかりづらい説明で申し訳ありません。 >201350002505250 と 2013010150002505250  これは私の記載ミスです。すみません。 tom04さんの憶測通りセルがわかれております。 A列1行目「通し番号」2行目(コピー挿入したい)「年月」3行目(コピー挿入したい)「101」 B列1行目「郵便番号」2行目(コピー挿入したい)「金額」3行目(コピー挿入したい)「金額」 C列1行目「住所」2行目(コピー挿入したい)「消費税」3行目(コピー挿入したい)「消費税」 D列1行目「名前」2行目(コピー挿入したい)「合計金額」3行目(コピー挿入したい)「合計金額」 2行目と3行目は記載内容が異なります。 10000名分同じ内容で2行目、3行目を1名おきにコピー挿入ができると助かります。

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

こんばんは! 行挿入後、どのようなデータを貼り付けるか判らないので とりあえず行挿入と行削除のコードを載せてみます。 質問文を見る限り、すべて同じデータのようですが、あえてそこは無視しています。 シートモジュールです。 Sub 行挿入() Dim endRow As Long, cnt As Long endRow = Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False Range("A:A").Insert With Range(Cells(2, "A"), Cells(endRow, "A")) .Formula = "=row()" .Value = .Value .Copy End With Do Until cnt = 2 cnt = cnt + 1 Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues Loop Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes Range("A:A").Delete Application.ScreenUpdating = True MsgBox "処理完了" End Sub Sub 削除() Dim endRow As Long endRow = Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False Range("A:A").Insert With Range(Cells(2, "A"), Cells(endRow, "A")) .Formula = "=IF(B2="""",2,1)" .Value = .Value End With Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes Range("A:A").Delete Application.ScreenUpdating = True MsgBox "処理完了" End Sub ※ あとは行挿入後の貼り付けだけですが、具体的なデータを示していただければ 少しはお役に立つと思います。 今回はこの程度で・・・m(_ _)m

  • sora1515
  • ベストアンサー率58% (54/92)
回答No.1

選択した範囲に2行追加するマクロです。 範囲指定の方法は別途お好きなのに変えて下さい。(xlDownや固定値) Sub test() col_1st = Selection(1).Column col_end = Selection(Selection.Count).Column row_1st = Selection(1).Row row_end = Selection(Selection.Count).Row + 1 For i = row_end To row_1st + 1 Step -1 Range(Cells(i, col_1st), Cells(i, col_end)).Insert xlShiftDown Range(Cells(i, col_1st), Cells(i, col_end)) = "'010170003507350" Range(Cells(i, col_1st), Cells(i, col_end)).Insert xlShiftDown Range(Cells(i, col_1st), Cells(i, col_end)) = "'201350002505250" Next i End Sub ps 追加行を数えず処理するにはやはり最終行からの処理が楽でしょうか。

関連するQ&A

  • Excelでコピーした行の挿入を繰り返すには

    Excelで行をコピーして、別の行で右クリックして コピーしたセルの挿入 を行うと、コピーした行を挿入できます。 しかし、一度 コピーした行を挿入すると、 もう右クリックしても 「コピーしたセルの挿入」はありません。 コピーした行の挿入を繰り返すには、どうすればよいですか。 Excel2000です。

  • マクロでコピーしたセルを4行目毎に挿入する方法

    こんにちは!よろしくお願いいたします。 Excel2003で計算式が入力されている1行をコピーして 4行目にコピーしたセルを挿入したいのですが、複数 あるため、マクロを作りたいと思っています。   A   B  C 1 氏名 住所 件数  → 計算式が入力されている 2 氏名 住所 電話 3 氏名 住所 郵便 4 氏名 住所 ふりがな            → 1行目の計算式も含めコピーしたい この操作を繰り返すマクロを作成したいと思っています。 マクロは初心者です。ご指導よろしくお願いいたします。

  • エクセルでセルに数字を入力することにより行をコピー挿入

    仕事で送り状作成用のデーターを作っています。 行に郵便番号、住所、名前等が入力されてます。この1行をコピーしたいのですが、セルに必要する数字を入力することによりコピー挿入することはできないでしょうか? 例)    A       B       C      D 1  郵便番号  住所       名前    コピー行数 2  100-0001  東京都港区・・・ 山本太郎    5 3  101-0001  東京都江東区・・ 山田花子    8 以下複数行続きます。 D列に必要なコピー行数を入力することにより、一発でコピーできる方法をご教授くださいませ。エクセルのマクロを使えばできそうなのですが、マクロはあまりわかりませんので、できるだけ詳しくお願い致します。

  • Excel でコピーしたセルの挿入が出来ません

    WIN 10 ですExcel でコピーした行のセルの挿入が出来ません 長年使っていて初めてのトラブルです1ページ分をコピーをして上の行に挿入しているのですが コピー(C)>でコピーをしてから>次にコピーしたセルの挿入(E)を選びたいのですが出て来ません 1行でも挿入が出て来ないので出来ません 隣のシートの場合はは挿入(E)が出て来て挿入できます よってソフトの異常ではなくこのシートに何か異常隠れた変なデーターが入っているのでしょうか 対策が有りましたらよろしくお願いいたします

  • エクセル 「コピーしたセルの挿入」のエラーについて

    質問です。 (1)シート1~10をシート11へ「=」を使ってデータ移行。  (行にして300超えるくらい) (2)そのデータ(シート11で集まった各データ)を並び替え。 (3)データの一部をコピー→「コピーしたセルの挿入」。  (行単位、シート11内で) 以上の事を番号順に作業した時に挿入先に「#REF」のエラーが出ます。 シート1~10には他のファイルの値をVLOOKUPを使ってリンクされるようになっています。 ※以前から使っているファイルで、 先日までは「コピーしたセルの挿入」をしても データはそのまま挿入されてデータ管理が出来たのですが、 どこをいじったのかエラーが出て大変困っております。 回復方法わかる方、宜しくお願いいたします。

  • エクセルで「コピーしたセルの挿入」ができない

    ある時から、エクセルの右クリックから「コピーしたセルの挿入」が出来なくなりました。 通常はエクセルで行を範囲選択選択して右クリックをすると、「コピーしたセルの挿入」がでてきますよね。 色々試行してみると、なぜかホームページを開いている時にこの症状が出るようなのです。 ホームページを閉じると、、「コピーしたセルの挿入」も表示されて動作する事が出来るようになります。 どこか設定が変わってしまったのでしょうか? エクセルを再インストールしても症状が変わりません。インターネットエクスプローラーは設定が変わってしまうのが怖くて変えていません。 エクセル2000、IE7.0 です。 この分野、初級者です。よろしくお願い致します。

  • エクセル 一行ずつセルを追加挿入する方法

    エクセルの表で、一行ずつセルを追加挿入しようと考え Ctrl 押しながら行番号を選びクリック、挿入ボタンを押したのですが 行全体または列全体とほかのセルを含む選択範囲に対してそのコマンドは使用できません。 行全体列全体または一つのセル範囲を選択し再度実行してください。 というメッセージが出て挿入することができませんでした。 うまくいくこともあるのですが、たびたび上記のメッセージがでてうまくいきません。 適切なやり方をご存じの方いらしたら教えていただけないでしょうか。 併せて、なぜ上記のエラーメッセージが表記されるかについてもご教示いただけたら幸いです。

  • EXCELで複数行を自動コピー&挿入

    エクセルで、100行、AからZまで数字やテキストが入力されいるシートがあります。 この100行のデータの1行につき、その下に5行をコピー挿入したいのです。つまり、1行目のデータと2行目のデータの間に1行目データ5行分自動挿入させる。さらにこの時、1行目のAからZまでのセルで、特定のセル(たとえば、BとTのコラム)のみ、コピーをしない、という設定をしたいのです。 よろしくお願いいたします。

  • 行の挿入で数式も自動的に挿入

    C1列に=SUM(A1:B1)を入力し、オートフィルを30行目までかけました。 3行目で行の挿入をした時に 自動的にC列に数式が入力されている状態 (上の行、又は下の行のコピーを挿入) にしたいのですがどうすればよろしいでしょうか? 行をコピー  → コピーしたセルの挿入 以外の方法はあるんでしょうか? よろしくお願い致します。

  • excelのマクロ?範囲行をコピーしたいのです。

    どなたか教えて下さい。 行1から行20までをコピーをして、それを「コピーしたセルの挿入」でN回実行させたいのですが、FOR命令文だけでは巧く出来ません。 ------------------------------------------------------------ ・コピー元の、行1から行20は固定で使用します。 ・セルの挿入先は  N=1のとき・・・21行目に挿入します。  N=2のとき・・・41行目に挿入します。  (挿入先は、N*20+1 でいいようなきがしますが)

専門家に質問してみよう