• ベストアンサー

マクロにて空白のセルを一括して消去でなく削除したい

空白のセルを一括して、空白セルについた色も含めてマクロで全て削除したい。 現在のデータ(仕様)について 1.Sheet2に列ごとにセルに色をつけ、データもあるとします。 2.A列10行・B列6行・C;列18行というように、列によってデータの入った範囲が違います。 3.どの行も途中に空白セルはなく、詰めたデータです。 以上です マクロで一括処理したいと思いますが、このようなことができるコードを教えて頂けませんか。よろしくお願いします。

  • rr5se
  • お礼率96% (87/90)

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

  • ベストアンサー
  • masnoske
  • ベストアンサー率35% (67/190)
回答No.5

全部のセルを調べているので、時間が掛かります。 質問の情報からは書式設定されているセルがどこなのか特定できませんでした。 A列~C列であれば、Cellsの部分をRange("A:C")とすれば、3列だけなので早くなります。 あるいは、Cellsの部分を UsedRangeにすれば、かなり限定されます。 あと、最初に Application.ScreenUpdating = FALSE を入れ、最後に Application.ScreenUpdating = TRUE を入れれば、セルの描画が都度 掛からないので早くなります。

rr5se
質問者

お礼

できあがりました。お世話になりました。範囲のことも含めて、色々な要望にも応じて頂き、ほんとうにありがとうございました。助かりました。

その他の回答 (4)

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.4

失礼しました。 If rng.Value = "" Then の間違いです。

rr5se
質問者

お礼

ありがとうございます。

rr5se
質問者

補足

できました。ありがとうございます。処理が大変遅いのは改善できないですか。できれば、教えて頂けませんか。私のPCのせいでしょうか。よろしくお願いします。

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.3

シートにある全てのセルは Cellsで捕まえられます。 For Each Next でループを回し、セルに値が無ければ Clearするだけです。 Dim rng As Range For Each rng In Sheets("Sheet2").Cells If rng.Value <> "" Then rng.Clear End If Next

rr5se
質問者

お礼

ありがとうございます

rr5se
質問者

補足

Sub Macro1() Dim rng As Range For Each rng In Sheets("Sheet2").Cells If rng.Value <> "" Then rng.Clear End If Next End Sub ありがとうございます。これで試してみましたが、データがあるところが、セルの色も含めて削除されて、データのない空白が残っています。上記のコードで実行しましたがどこか間違えているでしょうか。それと、処理に時間がかかりすぎて終わらないように感じました。ご回答をよろしくお願いします。

  • kkkkkm
  • ベストアンサー率65% (1608/2445)
回答No.2

A1からC列までデータがあるとした場合、以下で試してください。 Sub Test() Dim LastRow As Long With Sheets("Sheet2").Range("A1").CurrentRegion LastRow = .Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row End With Sheets("Sheet2").Range(Cells(1, "A"), Cells(LastRow, "C")).SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp End Sub

rr5se
質問者

お礼

ありがとうございます。

回答No.1

遅くても良いなら、任意の行の、 1列目のセルの値を読み込んでそれが""なら、 2列目のセルの値を読み込んでそれが""なら、 ・・・ 最終列まで読み込んでそれが""なら、 その行を消す。セルの色は判定内に無いので、数字も文字列も入って無い空白の行だけ消えます。 高確率でもっと高速・高効率・スマートな方法があるはずだけど、それを知らなくてもこのアルゴリズムで自動で消せるのは楽だと私は思います。 これで使うステートメントは、forループ、セルの読み、文字列判定、行削除くらいかな。たった4つです。

rr5se
質問者

お礼

ありがとうございます。

関連するQ&A

  • 空白セルの削除と重複データの加算のマクロ

    シート1の文字列のデータの0又は空白のセルを取り除いて、並んでいる文字列の左と真ん 中の数が重複しているデーターは左端の数を加算して別のシート2のC10からC100のセルに抽出できるマクロを教えて下さい。データーの0は関数で空白にしたいと思っています。 データの並び方はこのままで重複するデーターの加算と空白のセルの削除を一回のマクロで実行したいのです。  E列               空白を削除    0-4-1              0-4-1         2-3-2              2-3-2         2-2-3              2-2-(3) 0                 2-2-(1) 2-2-1              4-1-9 4-1-9              2-1-7 2-1-7              2-2-3 0                 2-3-(5)                (数式がある空白セル)   2-3-(1)            2-2-3              2-3-(4) 0                 0-4-1 2-3-5 2-3-1 2-3-4 0-4-1 シート2のB列10~100に抽出 0-4-1 2-3-2 2-2-4 4-1-9 2-1-7 2-2-3 2-3-10 0-4-1 このように抽出したいのです。

  • 空白のセルを行削除する。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

  • 空白行削除

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

  • マクロで空白セルをNULLという文字に置き換えたい

    はじめまして。 初投稿します。 エクセルのマクロは初心者です。 早速質問ですが、 空白セルを'NULL'という文字列に置き換えたいのです。 その空白セルは複数あり、扱うデータの行の中にランダムで 空白のセルがある状態です。IF関数にて処理する場合、 どのように処理すればよいのでしょうか。 わかりづらい文章かと思いますが、よろしくお願い致します。

  • 空白セルの削除

    A列に得意先、B列に金額が入力されています B列の8行目と13行目が空白です この空白セルを対象にその行を削除する関数はありますか 要するに金額欄の空白セルを読み取りその行全体を削除する関数が知りたいのです よろしくご指導ください

  • 複数列の重複と空白を削除するマクロ(VBA)

    マクロの初心者です。 添付写真のように、複数列の重複セルと空白セルの両方を削除し、各列のデータを10列目から並べたいのですが、この場合、どのようなマクロを書けばよいでしょうか。 データの個数: 列によりますが、最大1000行程度 列数: A~J(空白列はありません)

  • 行一括削除を早く行う、こんな方法できますか。

    マクロによる行削除については、空白行の削除などいろいろな質問と 回答が出ていますが、データ量が多くなると自動化でもかなり時間が かかります。 そこで、ソートにより並べ替えを最初に行い、ある列に、最初に ある言葉や数字が出た行から最終行までを一括削除するマクロなら、 処理時間が早く出来ないかと思いました。 例えは、データA10からZ300で、並べ替えによりH列の最初に 日本という言葉が出たら、その行から最終300行までを一括削除 するという方法です。 (削除は行全体でもAからZまでの行、どちらでもよいです) そんな方法が出来るなら教えて下さい。よろしくお願いいたします。

  • 別シートに空白セルを詰めデータを自動コピー

    excel2013で、【sheet1】の列にあ~わ行まであり、行にそれぞれ氏名を入れています。 グループ1とグループ2にページを上下に分けていて、それぞれ合計50名です。 行は各20行まで用意していますが、行によっては空白セルもあります。 この【sheet1】のデータを【sheet2】の1~100番まで番号を振った隣のB列に空白セルを詰めながら氏名データを並べたいのですが、マクロで出来るでしょうか? ちなみに空白セルを詰めるマクロは下記コードで確認しています。 Sub Macro() Selection.SpecialCells(xlCellTypeBlanks).Select Selection.Delete Shift:=xlUp End Sub シート間のデータ移動の方法も分かるのですが、2つをどう繋ぎ合わせればいいか分かりません。 簡単ですが、sheet1の参考画像も添付していますので、アドバイス宜しくお願いします。

  • エクセルのマクロで、選択範囲の空白行を削除する方法

    タイトルの通りですが、エクセルのマクロを使って、選択範囲にデータの入っていない空白行を削除するマクロを作りたいのですが、うまく行きません。 (空白行の判定は、1つの列だけで、O.K.です。) どなたか、詳しい方、アドバイスお願いします。

  • エクセルの空白セルの選択

    こんにちは いつもお世話になっています。  エクセルの空白セルの選択について教えてください。 A列、B列にデータがあります。それぞれの列で空白セルがありますが、同じ行で両列ともに空白のセルだけを選択する方法を教えてください。  単に「ジャンプ」から空白セルを選択すると片方にデータがある行のセルも選択してしまいます。片方にデータのある行は残し、両列ともに空白の行を削除したのです。  よろしくお願いします。

専門家に質問してみよう