• ベストアンサー

Excelで空白行を削除するマクロは?

マウスやキーボードを使った記録式でマクロを作っています。 その中でシート上に散らばっている数十行の空白行を削除する行程が必要です。 しかし、マウスやキーに依るメニューでは「空白行の削除」と言うのが有りません。 VBEに直接打ち込まないといけない様です。 ステートメントが分かる方が要らしたら教えてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

VBAの質問としてお受けします。 >ステートメントが分かる方が要らしたら教えてください まず、最初に、VBAでは、ステートメントというのは別の意味です。 >しかし、マウスやキーに依るメニューでは「空白行の削除」と言うのが有りません。 マウスのメニューに加えるということでしょうか? 以下は、その行の全てのセルが空白の場合にのみ、削除されます。 '標準モジュールへ Sub BlankRowsDelete()  Dim Rng As Range  Dim i As Long  Set Rng = Selection '最初にマウスで範囲を選択  For i = Rng.Rows.Count To 1 Step -1   With Rng.Cells(i, 1)    If Application.CountA(.EntireRow) = 0 Then     .EntireRow.Delete    End If   End With  Next i End Sub '標準モジュールか、ThisWorkbook へ Sub MouseRightClickMenuAdd() On Error Resume Next  Application.CommandBars("CELL").Controls("ブランク行削除").Delete On Error GoTo 0  With Application.CommandBars("CELL").Controls.Add _  (Type:=msoControlButton, Temporary:=True)  .BeginGroup = True  .Caption = "ブランク行削除"  .OnAction = "BlankRowsDelete"  End With End Sub 'ThisWorkbookへ Private Sub Workbook_Open() Call MouseRightClickMenuAdd End Sub なお、右クリックメニューでトラブルがあった時は、  Application.CommandBars("CELL").Reset を実行してください。通常、Excelを終了すれば、右クリックメニューは解除されます。

popuran121
質問者

お礼

>ステートメントというのは別の意味です。 よく知らない言葉をすみません。 作って頂いたSub BlankRowsDelete()で旨くいきました。 さらにマウスのまで有り難うございます。 有効に使わせて頂きます。 説明がヘタだったようで、申し訳ありませんでした。 m(_ _)m

その他の回答 (3)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.4

こんばんは。 Wendy02さんの方法が一般的な方法だと思いますが、 もし、A列が空白の行を削除してもよければ、以下のコードでもOKです。 -------------------------------------------- Sub TestDelete()  With Range("A1:A" & Range("A65536").End(xlUp).Row)   .SpecialCells(xlCellTypeBlanks).EntireRow.Delete  End With End Sub ---------------------------------------------- 以上です。

popuran121
質問者

お礼

それぞれの方法をやってみていたので、返答が遅れて済みません。 やってみましたが、これでも合うみたいです。 有り難うございます。

回答No.2

データのレイアウトがわかりませんが、もしも、ある列が空白の行は空白行として みなしてよいのでしたら、その列全体を選択して、[Ctrl]を押しながら[G]を押し ます。 ジャンプボックスが表示されますので、[セル選択]から「空白セル」を選択して OKします。 空白セルがまとめて選択されますので、[編集]-[削除]の「行全体」を指定します。

popuran121
質問者

お礼

この方法でやれば、操作を記憶させるマクロで出来ました。 有り難うございます。

  • TK01
  • ベストアンサー率43% (43/100)
回答No.1

実際にご使用中のシートの状態が不明なのですが、もしかたしたら、この方法でいけるかもしれません。うまくすると、マクロを作らなくても空白行を削除できますよ。 1.A列に空白列を追加する 2.A列の1行目から最終行まで、連番を振る(1, 2, 3…) 3.データの入っている列をキーとして、データの並べ替えをする。すると、空白行がソートされてひとまとまりになります。 4.空白行を消す 5.今度はA列をキーとして、データの並べかえをする。するともとの順に戻ります。空白行だけ抜けている状態です。 6.A列を削除する。 以上です。

popuran121
質問者

補足

毎日処理しなければならないBook(実際に処理するのはその内決まった一枚のシートだけ)が何十か出てきます。 元のシートはA列のみ100行から400行位です。 これをセル内文字列の一定のところでB列C列に分割したり、A列の品番に応じてD列に記号を入れたりとか色々加工します。 セルに入っている文字や数値はシートごとに違いますが、作業のルールは一定で、毎回同じ作業の繰り返しなので、マクロのボタン一発でやろうと思っているんです。 空白行の削除についてですが。 手作業で一枚づつやる場合はオートフィルターで空白行だけ抽出し削除できます。 しかし、この作業は人が目で見てソートされた複数の行を選択する作業が入っているので、マクロで自動的にやることが出来ません。 空白行はシートによって29行だったり51行だったりマチマチです。 それで空白行を削除できるマクロは?と思った訳です。 説明の仕方が良くないかも知れませんが。 m(_ _)m

関連するQ&A

  • Excel 空白行を上に詰めるマクロ

    関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2   A   B   C     A  B  C 1 あ  い  う   1 あ  い  か 2        か   2 (空白行) 3 き  く   け    3 き  く  し   4 こ  さ   し   4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。

  • Excelで空白行を削除したい

    2500行位使用しているシートのなかに、どのセルも空白になっている不要な行が300行くらい混ざっています。 この行を自動的に削除するにはどうすれば良いでしょうか。 ただ、その行のA~Eセルは空白でもFセルに値が入っているなど完全に空白でない行は削除できません。 メニュー、関数、VBAなど有れば教えてください。

  • 空白行の削除

    エクセルのシートに下記のようなデータがあったとします。 A B C D E 1 1 2   1 2 2 3 5 3 3 3 4   3 4 4 5 4 4 このようなデータが複数のシートにあり Dの欄が空白の時、その行を削除して A B C D E 2 2 3 5 3 4 4 5 4 4 このような形にしたいのです。 一つのシート毎にはマクロを記録し、実行することでできたのですが いっぺんに複数のシートに同じ処理をかけるにはどうしたらよいでしょうか。 シートの数が多いので、いちいちシートを移動して記録したマクロを実行 するのがとても手間なのです。

  • 空白のセルを行削除する。EXCELマクロなのですが・・

    VBA初心者です。 データーをHPから、単純にコピーしてきて、 EXCELに貼り付けています。 フィルターをかけても、画像かなにかがセルに張り付いているのか、 空白行をすべて削除できません。 いろいろ試して(HPから、空白セルの行削除について書かれてあるマクロを貼り付けて)動いたのが、このVBAです。 しかし、遅いので、早いVBAに簡略できればいいのですが。。 大体、1000行ぐらいの文字を貼り付けて、3/1ぐらいが空白行です。A行のセルの空白のみを、削除したいのですが。  まったくの素人なので、わかりません。 どうかよろしくお願いいたします。 Sub 空白の削除() x% = Worksheets("sheet1").Range("A65536").End(xlUp).Row For i = x% To 1 Step -1 If Worksheets("sheet1").Cells(i, 1).Value = "" Then Worksheets("sheet1").Rows(i).Delete Next End Sub

  • エクセルマクロ 空白行の削除ですが、コピー時の問題

    いつもお世話になっております。 エクセルのマクロですが、指定したシートの指定した行にデータが 入っていない場合に削除するマクロなんですが、行くつか試してみ ましたが、削除したものをコピーして張り付けると、削除された行も コピーされてしまいます。完全に削除するにはどのようにしたらよい のでしょうか。 空白行のあるデータを、空白を無くしてデータベースにコピーする 作業を行いたいのですが、他によい方法はありますでしょうか。 よろしくお願いします。

  • エクセル マクロ 連続する空白行の削除

    エクセルのマクロ処理で、連続する空白行を削除するにはどうしたらいいでしょうか。 行いたい処理は、データ間に存在する一行のみの空白行は残し、二行以上連続する空白行を一行の空白行に縮めるといったことです。

  • エクセルマクロで、空白行の一つ下の行を削除したい

    下記のようなデータがあるとき、空白行の一つしたの町名を一括で削除するには、どのようなマクロがあるでしょうか。 一定の行数なら私にもわかるのですが…、どなたか教えていただけないでしょうか。 町名   男  女  計 青山    86  183  269 →これが下の四つの町の小計になります。 ○○町  25  43  68 ××町  11  45  56 ▽▽▽  30  55  85 ◆◆◆  20  40  60                  →空白行 北山町   41  100 90 →これが下の二つの町の小計になります。 △△町  11  45  56 ■■■  30  55  85 このような表が、8000行あります。必ず空白行の下の行が小計になります。 空白行の一つ下の行、「青山」と「北山」の行を、マクロを使って一度に削除できるでしょうか?

  • 空白行の削除マクロについてご教示ください

    空白行の削除に、下記マクロを活用させていただいていますが、 見た目空白なのに削除されない行が時々残ってしまいます。 削除されなかったセルを「Deleteキー」で空白にするとマクロが 実行され、きちんと削除されます。 こういった、スペースか何かが入っていても、見た目空白なら 削除するようにはできないでしょうか。 どなたかよろしくお願いいたします。 Sub 削除() Dim c As Range Dim 開始行 As Long Dim 最終行 As Long 開始行 = 5 最終行 = Range("a5000").End(xlUp).Row For Each c In Range("a" & 開始行 & ":a" & 最終行) If c.Value = "" Then Rows(c.Row).Delete End If Next End Sub

  • マクロでエクセルの空白行をアクティブにしたい

    データーを入力しているシートがあり、マクロのボタンをクリックする データの空白行をアクティブになるようにしたいのです。 具体的に B列のデーターが入力されていない行をアクティブにして他のシートのデーターを張り付ける作業をしたいのですが・・よろしくお願いします。

  • 空白行削除

    宜しくお願いします。 1枚のファイルシートに14ブロックのデータが貼り付けてあります。各ブロック行の長さは違く、ランダムに貼り付けてあります。例えば、データ 何百行の空白 データ…と繰り返されており、約3万5千行ぐらいあります。 空白行削除で多分半分近くまで上に詰められれば良いのですが、たくさんあるのでマクロで教えていただければと思います。ネットでころがってるデータ試してみたのですが(1部) ENDLESSに実行されて、出来てるのかどうかも確認はとれてません。ちなみに自分のシートに貼ってあるデータはA列からAS列まであり数字、文字混在です。また各ブロックの終わりは集計行となっており、空白セルがまじってます。宜しくお願いします。

専門家に質問してみよう