• ベストアンサー

エクセル VBA

A列に番号が1から順番にコード番号がはいっています。所々欠番が合ったりするのでそれをマクロで自動に行を挿入したいのですができますでしょうか? 文章だとうまくいえないので、 A   B     C 1   〇×商品  10,000 2   AA商品  30,000  4   BB商品  25,000 6   ZZ商品  20,000 を 1   〇×商品  10,000 2   AA商品  30,000 3 4   BB商品  25,000 5    6   ZZ商品  20,000 といった感じに欠番を追加してその行の右側すべてに空白のセルを追加する方法があれば教えて下さい。

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

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.3

Sheet1にデータが入力されていると仮定します。 マクロは以下の通りです Sub aaa() Dim i As Integer i = 0 Do Until Worksheets("Sheet1").Range("a1").Offset(i, 0).Value = "" Worksheets("Sheet1").Range("a1").Offset(i, 0).Activate If ActiveCell.Value <> ActiveCell.Row Then Rows(ActiveCell.Row).Insert Worksheets("Sheet1").Range("a1").Offset(i, 0).Value _ = ActiveCell.Row End If i = i + 1 Loop End Sub EXCEL2003使用 動作確認はしていますが、上手く動作しない場合はご容赦ください。

max0515
質問者

お礼

回答ありがとうございました。無事解決しました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

A列を1から順番にする方法 Sub test02() d = Range("A65536").End(xlUp).Row j = 1 Cells(1, 1).Activate cmp: If ActiveCell = Cells(d, "A") Then Exit Sub If j = ActiveCell Then GoTo p1 If j < ActiveCell Then GoTo p2 p1: j = j + 1 ActiveCell.Offset(1, 0).Activate GoTo cmp p2: ActiveCell.EntireRow.Insert ActiveCell = j j = j + 1 ActiveCell.Offset(1, 0).Activate GoTo cmp End Sub 1からの1づつアップする独立カウントのjと、現実のセルのA列の番号を、マッチングのロジックで、番号の少ないほうをA列にセットする(独立カウントの方は行挿入してそこへjをセット)ロジックになっています。

max0515
質問者

お礼

回答ありがとうございました。解決できました。

  • aco_michy
  • ベストアンサー率25% (70/277)
回答No.2

>素人なんで全く分かりません。 for~nextループ知っていますか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

A列を走査して、A列の番号の後ろに欠番を補って、 A列で並び替えるのが簡単だと思います。(そういうマクロを作る)

max0515
質問者

補足

さっそくの回答ありがとうございます。もしよろしければモジュールに書くコードを教えていただけないでしょうか?素人なんで全く分かりません。

関連するQ&A

  • エクセル2003のVBAを教えて

    エクセル2003のVBAを教えてください。 次の対象データで、(1)(2)(3)の作業が出来るエクセルVBAを教えて下さい。 (1)(2)(3)個々のVBAでお願いします。 ●対象データ:種類(A列)、文字(B列)、    データの行数:不特定なので、データのある最終行までとします。 ●教えていただきたい項目  (1):種類だけを(C列)に取り出す。  (2):種類の先頭に空白の行を3行入れて、追加の2行目の種類(A列)に文字(B列)を入れる。  (3):種類が5行以上あるときは、5行ごとに空白行を追加する。 ●対象データ 種類(A列)   文字(B列) AA       あああ BB       いいい BB       いい BB       いいい CC       うう CC       うう DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ ●(1)のVBAの結果(このようになるVBAを教えてください。) (C列) AA BB CC DD ●(2)、(3)のVBAの結果(このようになるVBAを教えてください。) 種類(A列)    文字(B列) あああ AA        あああ いいい BB        いいい BB        いいい BB        いいい うう CC        うう CC        うう ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ

  • エクセル行の挿入

    excelに行を追加する方法を教えてください! Bにある数からマイナス1行下に挿入したいのです。 1→挿入なし  2→下に1行挿入  3→下に2行挿入 数よりマイナス1行の挿入をしたいのですが、 マクロ、関数など全く分かりません。 以前の質問も見てみたのですが、見当たらないのと、 マクロ?が全くわからないので、 どなたか一から教えていただけないでしょうか? 本当に申し訳ないのですが、お願いします。 Aにkkkk Bに数が入ります。   A | B | C | D ------------------------------------- 1| kkkk   2 ------------------------------------- 2| kkkk   1 ------------------------------------- 3| kkikk   3 ------------------------------------- 4| kkkk   2 ↓行の挿入   A | B | C | D ------------------------------------- 1| kkkk   2 ------------------------------------- 2| kkkk   空白(行の挿入) ------------------------------------- 3| kkikk   1 ------------------------------------- 4| kkkk   3 ------------------------------------- 5| kkkk   空白(行の挿入) ------------------------------------- 6| kkkk   空白(行の挿入) ------------------------------------- 7| kkkk   2 ------------------------------------- 8| kkkk   空白(行の挿入) -------------------------------------

  • エクセル マクロ VBA

    エクセルのマクロについて質問です。 『集計』というブックの『集計開始』というシートに     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 コメント  空白     空白   3行目 空白   空白     空白 4行目 商品名  支店     個数  5行目 空白   空白     空白 6行目 空白   空白   コメント1 7行目 空白   空白     空白 8行目 空白   空白   コメント2 9行目以降    上記のデータ(見出しを除く)の繰り返し というデータが入っています。 B列の中に『AAA』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 C列の中に『B』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 (今は、手作業で編集→置換→検索する文字列の中に『B*』と入力し、 置換後の文字列を空白にしてすべて置換ということをやっています。)                            ABC列(データーの入っている行まで)の空白を含む行を一括削除し、 以下のような形にしたいのです。     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 商品名  支店     個数  3行目 商品名  支店     個数          ・         ・ このようにするマクロ文はどのようになりますでしょうか?

  • 行挿入マクロをご教示ください

    A列の5行目から1000行ほどK列までデータが入っています。 A列からK列をB列優先でソートを行うと、B列にところどころ同じ番号が2行あったり、3行あったり、また4行とバラバラで、出てきます。 この場合、同じ番号が2行以上あるセルの上に空白の行1行を挿入し、同じ番号行分を合計して整理したいと考えています。 2行以上ある行の上に空白行を1行挿入するようなマクロをご教示ください。 どなたか、よろしくお願いします。

  • VBAのパスの取得について

    excelでマクロをVBAで組み、excelが現在置かれているところのパスを取得したのですが たとえばCのaaというファイルのbbところにおいて実行すると変数aに C:\aa\bb を取得することができました。 このパスの最後に\をつけて C:\aa\bb\ にしたいのですがどの書けば変数aに\を追加できるのでしょうか?

  • エクセルで質問です

    いつもすいませんが教えて下さい。 例えば A列の4行目~16行目に空白と数値がランダムにはいっています。 これをB列の2行目から空白を除いて、数値のみを順番に並び替えるには、マクロが必要なのでしょうか? 、必要ならマクロを教えてください。 できればマクロなしが希望ですが。 よろしくお願い致します。

  • EXCEL(VBA)で1行おきに行を選択する方法

    こんにちは。VBAは苦手なので教えてください。 EXCELのsheet1にあるリストに、下記マクロで1行おきに 空白行を挿入しました。 Sub test1() '隔行で空白行を挿入 Dim rw As Long 'セル For rw = Range("A1").End(xlDown).Row To 2 Step -1 Rows(rw).Insert Next End Sub 同じファイルのSheet2の1行目<Rows("1:1")>に、計算式が入力されています。 マクロで挿入した空白行全てを選択し、そこへSheet2の1行目のコピーを 貼り付けたいです。 ぜひ、良い方法を教えてください。

  • Excelのマクロを作ってもらえますか?

    こんにちは。 エクセルのマクロで、Sheet1に転々と 入力されているデータを すべてA1の列へ統一して並べ替え(2) 同じデータの数を計算してB2へ記述する(3)などという マクロができるなら作っていただけないでしょうか? もし、数の入った行のみ残して削除までできれば最良なの ですが(4) (2) AA-20 AA-20 AA-20 BB-30 CC-30 CC-30 CC-30 (3) AA-20   3 AA-20 AA-20 BB-30   1 CC-30   3 CC-30 CC-30 (4) AA-20   3 BB-30   1 CC-30   3 このようになのですが、 お時間のあるときで結構ですので宜しくお願いします。

  • エクセルで空白を等間隔に挿入したい

    タイトルにあるようにエクセルでマクロを使って等間隔に空白行を挿入したいのですが、 現在コードがこのようになっております。 **************************** Sub Macro1() Range("AA34").Select Do While (ActiveCell.Value <> "") For i = 1 To 10 '何行の空白? ActiveCell.Offset(1, 0).EntireRow.Insert shift:=xlDown ' Next ActiveCell.Offset(34, 0).Activate '挿入間隔? Loop MsgBox "完了" End Sub ******************************* とありまして走らせますと 24行おきに空白ができるのですが、 問題点がいくつかできました ・この場合、全体を挿入していくので(AA:AG)といった特定の列を指定したい ・空白が1列x10行と挿入されるので10行1度にしたい ・挿入していく最終行を指定したい 以上でございます ぜひ、ご教授ねがいます。

  • VBAでの行挿入について

    Excel VBAの条件に合った場合、行挿入&挿入した行のセルに特定の値を入力 VBA初心者です。Excel2007、XPを使用しています。 A列からCK列、平均100行程度の顧客データがあります。 このデータは列数は変わりませんが、行数は毎回異なり、 1行1顧客ではなく、同じ顧客で数行で入ることがあります。 しかしA列の顧客番号で判別できるようにはなっています。 目標は下記の点です。 「BC列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「ポイント利用」と入力。 挿入した行のAC列に「BC列の値」を入力。 挿入した行のAB列に「1」を入力。 「BJ列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「送料」と入力。 挿入した行のAC列に「BJ列の値」を入力。 挿入した行のAB列に「1」を入力。 以降に必要な処理はマクロで作成できたのですが、 その後に上記項目を手作業で処理しているのも限度があるので、 最初に挿入処理できればと思ってます。 分かりづらい説明だとは思いますが、 何卒ご教授頂きたくお願い致します。

専門家に質問してみよう