• ベストアンサー

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  にしたい。

  • telmi
  • お礼率85% (41/48)

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

  • ベストアンサー
  • 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
質問者

お礼

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

関連するQ&A

  • Excell VBA:dataの空白行を削除したい。

    excellのマクロを使って、 次のようなデータで、データのない行を削除して詰めたいのですが。 どうすればよいのでしょうか。   A   B   C 1 t1  **  ** 2 t2  **  ** 3 4 t3 5 6 t4  を 1 t1  **  ** 2 t2  **  ** 3 t3 4 t4  にしたい。

  • エクセルで1行ごとに空白行を挿入し、挿入した空白行に色をつけたいです

    タイトルの通りです。 エクセル(2000)で、データはシート毎に件数が違います。 各シート毎にそれぞれ1行毎、空白行を挿入し、挿入した空白行のA列~G列までに薄いグレーの色をつけるマクロを入れたいのですが、うまくいきません。 詳しい方、教えて下さい。

  • エクセルVBAでデータ最終行取得方法

    エクセルVBAでデータ最終行取得方法で良い方法を教えてください。 データの行数、列数は不定。 最多のデータ行の列も不定。 この条件で、データ最終行を取得するにはどうすればよいでしょうか? lastrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row では、A列の最終行に限定されます。 lastrow = ActiveSheet.Cells(1, "A").SpecialCells(xlLastCell).Row では、列の限定はありませんが、一旦データ入力後、削除した部分まで入ってしまいます。 lastrow = ActiveSheet.UsedRange.Rows.Count では、データ入力後、削除した部分まで入ってしまい、かつ、1行目など上部が空白の場合、不正確になります。

  • 空白セルを無視して対数近似

    A列、B列 0 957 27.31 599 56.87 402 79.08 255 158.37 92 265.17 空白セル 541.76 空白セル 807.54 空白セル 1403.11 空白セル といった2列目データ行数が不定のエクセルデータに対し、 この場合は SLOPE(LN(B1:B5),A1:A5) というように、 B列で値をもっているセルだけを使って対数近似をした片対数グラフの傾きを求めたいです。 LNは空白セルを無視してくれないので、SLOPE(LN(B1:B9),A1:A9)とかやるとエラーが出てしまいます。 何かよい方法はないでしょうか。

  • エクセルで空白行を挿入するには

    一つの列に200ほどデータがあるとします。 そこで1行おきに空白行を挿入していきたいのですが手でいちいち空白行を挿入していてはらちがあきません。 関数等も含めて、なにか良い方法はないでしょうか。 例 セルA1   セルA2   セルA3 以下続く    ↓   セルA1   空白行(セル)   セルA2   空白行(セル)   セルA3   空白行(セル) 以下続く   といった具合です。

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

  • 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」を入力。 以降に必要な処理はマクロで作成できたのですが、 その後に上記項目を手作業で処理しているのも限度があるので、 最初に挿入処理できればと思ってます。 分かりづらい説明だとは思いますが、 何卒ご教授頂きたくお願い致します。

  • 行挿入+貼付けと空白行削除を同時に行うには?

    行挿入+貼付けと空白行削除を同時に行うには? VBA初心者です。 仕事でエクセルを使っていますが、 no  工程1 工程2 工程3 1   A   B   C 2   B   _   A 3   C   A   _ 4   _   C   A という表を no  工程 1   A     B     C 2   B     A 3   C     A 4   C というように並び替えたいのですが、 現在は各番号ごとに3行挿入して工程をコピー、行と列を入れ替えて貼付けをしています。 これだと no  工程 1   A     B     C 2   B      A 3   C     A 4     C     A のように空白行ができてしまいます。これをもう一度、マクロで消しているのですが、 データ量が多いため、行挿入と空白行を消す作業を同時に行わないとシート最大行数である 65536行を超えてしまう可能性があります。 同時にやるにはどのようにすればよいのでしょうか? よろしくおねがいします。

  • Excel2000で連続データの空白行を挿入したい。

    Excel2000で連続データの空白行を挿入したい。 A1=B1+C1 A2=B2+C2 A3=B3+C3 (あと続く) と連続データになっているものに空白行を2行入れる方法を教えてください。 結果的に下記のようにしたいのです。 A1=B1+C1 A2=空白 A3=空白 A4=B2+C2 A5=空白 A6=空白 A7=B3+C3 (あと続く) ジャンプ機能を使うとできた気がするのですが・・・。 よく覚えていなく、わかりません。 どなたか教えてください。 よろしくお願いします。

  • EXCELのデータで空白列を削除したい

    EXCELで列数・行数が毎回変化するデータがあり、この中に数箇所に分かれて空白列が存在します。 この空白列だけをマクロで削除する方法を教えてください。

専門家に質問してみよう