• ベストアンサー

エクセル 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/17069)
回答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