- ベストアンサー
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 にしたい。
- みんなの回答 (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
その他の回答 (3)
- brogie
- ベストアンサー率33% (131/392)
VBAで解らない時は、マクロを新規に作成して、そのプログラムを編集で見ると解ります。 やり方はお分かりと思いますが、念のため書いておきます。 「1行を挿入するマクロ」です。 1.「ツール」「マクロ」「新しいマクロの記録」を順にクリックしていきます。 2.「ショートカットキー」を入力して、「OK」 3.「行番号」をクリックして、 4.「挿入」「行」をクリック 5.「マクロ終了ボタン」をクリックして終了です。 「マクロ記録終了」ボタンが表示されていないときは、「表示」「ツール」「記録終了」をクリックすると、表示されます。 つぎに、「ツール」「マクロ」「マクロ」「編集」で プログラムが表示されます。 これを読むとどのようにプログラムすればよいかわかります。 老婆心ながら・・・・
お礼
ありがとうございます。 そうやれば、簡単にできるんですね。 なにしろ、初心者なもので、 知りませんでした。 参考になりました。 ありがとうございました。
- bin-chan
- ベストアンサー率33% (1403/4213)
telmiさん、おはようございます。 前回のご質問の反対ですね。 行番号を削除しなければ、簡単なのに・・・。 (行番号ソートでもとに戻ったはずですよ) 行番号を付与しない方法です。 [データ]-[集計]を利用します。 1.見出し行を追加します。 2.[データ]-[集計]をクリックします。 3.[グループの基準]にtの値の列を指定します。 4.[集計の方法]は合計でもデータの個数でもOK。 5.[集計するフィールド]の適当でOK。 6.ダイアログの[OKボタン]を押下。 7.集計表が表示されますから、左側に追加表示された集計レベル(正式名?)の 「2」をクリックします。 8.グループの計の行だけが表示されますから、1行ごとに内容を消去してください。 ここで一度にすべて消去すると肝心のデータも消えます。 必ず1行ごとに消去してください。 9.集計レベル(正式名?)の「3」をクリックします。 各グループの計の行が「空白行」となりました。 10.シート全体をコピーし、別シートに[形式を選択して貼り付け]-[値]でOK。 えいやっ!で実現する、姑息な手段です。
お礼
返事、遅れてすいません。 なるほど。 そんなやりかたが、あるんですね。 面倒ですがそれで、できますね。 参考になりました。 ありがとうございました。
- nishi6
- ベストアンサー率67% (869/1280)
こんな感じですか。 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
お礼
毎度ありがとうございます。
お礼
ありがとうございます。 返事、遅れてすいません。 みごとですね。 そのまま、使わせていただきます。 勉強になりました。 ありがとうございました。