- ベストアンサー
Excelデータで空白行を削除する方法とは?
- Excelのファイルシートに14ブロックのデータが貼り付けてあります。各ブロック行の長さは違い、ランダムに貼り付けられています。3万5千行以上のデータがあり、空白行を削除したい場合、マクロを使用する方法を教えてください。
- データの一部をネットで試した結果、ENDLESSに実行されているか確認できていません。データはA列からAS列まであり、数字と文字が混在しています。各ブロックの終わりには集計行があり、空白セルが含まれています。
- Excelのファイルシートには14ブロックのデータがあります。行の長さはバラバラで、ランダムに配置されています。全体で約3万5千行のデータがありますが、空白行を削除して整理したい場合、マクロを使用することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
フィルタで空欄のみチェックをはずして、 すべてコピー、別シートに貼り付け というのはどうですか? マクロでエンドレスにならないようにするためには、最後の行を一番最後から調べればよいです。 「VBA 最後の行を調べる」で検索するといろいろ出てきます。 MaxRow = Range("A1").End(xlDown).Row
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
下記の様なマクロでは如何でしょうか? 尚、シート上に存在する空白行の内、何行目以下に存在する空白行から削除対象にすれば良いのかという事が御質問文中で説明されていなかったため、取り敢えず1行目以下に存在する空白行から削除対象にする様なマクロにしております。 それと、御質問内容から考えて、ワークシート関数が入力されているセルであっても、そのワークシート関数による処理の結果が "" になっているセルに関しては削除した方が良いものと思われましたので、例えワークシート関数が入力されているセルであっても、関数が返した値が空欄となっているセルに関しては構わず削除する様になっております。 Sub QNo9162665_空白行削除() Const myColumns = "A:AS" Const FirstRow = 1 Dim myRange As Range With Application .ScreenUpdating = False .Calculation = xlManual End With Set myRange = Intersect(Range(myColumns), Range(FirstRow _ & ":" & Cells.SpecialCells(xlCellTypeLastCell).row)) With myRange .SpecialCells(xlCellTypeConstants, 23).EntireRow.Hidden = True .SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp End With Rows.Hidden = False With Application .Calculation = xlAutomatic .ScreenUpdating = True End With
補足
ご回答ありがとうございます。この式を使わせて頂きましたが、最初のconstというところで止まりコンパイルエラーがでました。すいません、結局最初に言ってくれた方法でマクロを組んで解決しました。出来れば、この作業は1日分の作業で、つぎに月間の貼り付けをしたいのですが、3月なら31日、4月なら30日までのまいにちのデータを1つに張り合わせるマクロ教えて頂ければと思います。約上に詰めて3万行、掛けて約90から~93万行にまとめたいのですが、マクロ教えて下さい。宜しくお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
補足すること。 エクセルを少し知っている人なら、下記をやってみようとすると思う。「それではうまく行かないなら、その旨を質問に前もって注記するはず。 VBAも経験ないのではないかと思うがどうですか。仕事でエクセルをつかうなら、必須だと思うよ。 ーー 下記操作でできないか。 ・シートの全セル選択。またはデータのある行とな列まで選択。 CTRK+G ・セル選択ボタンをクリック(またはALT+S) ・「空白セル」のボタンをクリック ・「ホーム」タブの「セル」のブロックの「シートの行の削除」をクリック 空白行が削除されるはず。 ただデータに複雑な事情があればうまく行かないかも。その事情(原因)を説明できるかな。 その時はVBAなど考える。
補足
ご回答ありがとうございます。とりあえず、フィルタ空白削除実行したのですが、前記のとおりランダムに貼り付けてあるので、空白がでて削除しようと思ったら、隠れてないブロックデータがあらわれたので、ダメだと思い質問してみました。データがいっぱいあるので、マクロで空白行削除のを、探してるのですがうまく行きません。どうか宜しくお願いします。
補足
ご回答ありがとうございます。すいません、データが何ヶ月各日数分たまってるのでマクロで、つくれば楽かなと思いました。でもそのやり方をマクロで組むことはできますか?自分で手動で組んでみますが、例えば空白のチェック外して、残りをコピーして、sheet2に貼り付けは、できますよね?すいません、今出先なもので、すぐに実行できませんが、戻ったら試してみます。できる、と答えてい例えばだければあと1つ、このシートは毎日の売上データで、こレを、行上に詰めて、30日分、31日分を1枚のシートに貼り付けるのが最終型なのですが、もちろん上は1各月の1日から順に貼り付けたいです。こちらのマクロも合わせてお願いします。宜しくお願いします。