• ベストアンサー

Excell VBA:dataに空白行を挿入したい。

A列のデータが違うところで、空白を開けたいのですが、どうすればいいのでしょうか。よろしくお願いします。 データの行数は不定です。 1 t1  **  ** 2 t2  **  ** 3 t2   **  ** 4 t3   **  **  を 1 t1  **  ** 2 3 t2  **  ** 4 t2  **  ** 5 6 t3  **  ** 7 8 t4  にしたい。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

>データの行数は不定です ということなので補足しておきます。下記マクロで不定行数でも大丈夫です。 また、元のA列の並びの中に未入力行があるとうまくいきません。下記では最初に未入力行を削除し、その後で行挿入を行っています。参考までに。 Sub GyoSonyu2()   Dim rw As Long 'A列のセル   Dim rwCount As Long 'A列の値が登録された最後の行番号   Application.ScreenUpdating = False   'A列のセルが未入力ならその行を削除   rwCount = Range("A:A").SpecialCells(xlCellTypeLastCell).Row   For rw = rwCount To 2 Step -1     If Cells(rw, 1) = "" Then       Rows(rw).Delete     End If   Next   'A列でセルの値とその前のセルの値が違えばば行挿入   rwCount = Range("A:A").SpecialCells(xlCellTypeLastCell).Row   For rw = rwCount To 2 Step -1     If Cells(rw, 1) <> Cells(rw - 1, 1) Then       Rows(rw).Insert     End If   Next   Application.ScreenUpdating = True End Sub

telmi
質問者

お礼

ありがとうございます。 返事、遅れてすいません。 みごとですね。 そのまま、使わせていただきます。 勉強になりました。  ありがとうございました。

その他の回答 (3)

  • brogie
  • ベストアンサー率33% (131/392)
回答No.3

VBAで解らない時は、マクロを新規に作成して、そのプログラムを編集で見ると解ります。 やり方はお分かりと思いますが、念のため書いておきます。 「1行を挿入するマクロ」です。 1.「ツール」「マクロ」「新しいマクロの記録」を順にクリックしていきます。 2.「ショートカットキー」を入力して、「OK」 3.「行番号」をクリックして、 4.「挿入」「行」をクリック 5.「マクロ終了ボタン」をクリックして終了です。 「マクロ記録終了」ボタンが表示されていないときは、「表示」「ツール」「記録終了」をクリックすると、表示されます。 つぎに、「ツール」「マクロ」「マクロ」「編集」で プログラムが表示されます。 これを読むとどのようにプログラムすればよいかわかります。 老婆心ながら・・・・

参考URL:
http://www2.odn.ne.jp/excel/index.html
telmi
質問者

お礼

ありがとうございます。 そうやれば、簡単にできるんですね。 なにしろ、初心者なもので、 知りませんでした。 参考になりました。  ありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

telmiさん、おはようございます。 前回のご質問の反対ですね。 行番号を削除しなければ、簡単なのに・・・。 (行番号ソートでもとに戻ったはずですよ) 行番号を付与しない方法です。 [データ]-[集計]を利用します。 1.見出し行を追加します。 2.[データ]-[集計]をクリックします。 3.[グループの基準]にtの値の列を指定します。 4.[集計の方法]は合計でもデータの個数でもOK。 5.[集計するフィールド]の適当でOK。 6.ダイアログの[OKボタン]を押下。 7.集計表が表示されますから、左側に追加表示された集計レベル(正式名?)の   「2」をクリックします。 8.グループの計の行だけが表示されますから、1行ごとに内容を消去してください。   ここで一度にすべて消去すると肝心のデータも消えます。   必ず1行ごとに消去してください。 9.集計レベル(正式名?)の「3」をクリックします。   各グループの計の行が「空白行」となりました。 10.シート全体をコピーし、別シートに[形式を選択して貼り付け]-[値]でOK。 えいやっ!で実現する、姑息な手段です。

telmi
質問者

お礼

返事、遅れてすいません。 なるほど。 そんなやりかたが、あるんですね。 面倒ですがそれで、できますね。 参考になりました。  ありがとうございました。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

こんな感じですか。 Sub GyoSonyu()   Dim rw As Long   For rw = 4 To 2 Step -1     If Cells(rw, 1) <> Cells(rw - 1, 1) Then       Rows(rw).Insert     End If   Next End Sub

telmi
質問者

お礼

毎度ありがとうございます。