プロが教える店舗&オフィスのセキュリティ対策術

Vba エクセルマクロで、


A列の、A1セルからA10セルに空白のある行を削除する、のは
Range("A1:A10").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

こんな感じだと思いますが、

A列の、A1セルからA10セルが空白ではない行を削除(空白行のみにする)するのはどういうプログラムになりますでしょうか。

また、
A列の、A1セルからA10セルが、「1」となっている行のみを削除するプログラムも教えてほしいです。

よろしくお願いいたします。

質問者からの補足コメント

  • 回答ありがとうございます。

    初心者で理解が難しいので、更に質問失礼いたします。

    A列は、空白以外のセルには、ABやKFなどのアルファベット2文字ずつか入っています。

    その場合、具体的にはどのようになりますでしょうか。
    すみません、定数の意味もわからず。。
    教えていただけますと嬉しいです。

      補足日時:2022/11/05 18:58

A 回答 (3件)

こんにちは



空白でないセルが「定数」のみなどのようにわかっているならSpecialCells()メソッドで
 xlCellTypeConstants ---定数
 xlCellTypeFormulas ---数式のあるセル
のような形で取得すれば、ご提示と同様の方法で可能でしょう。
https://learn.microsoft.com/ja-jp/office/vba/api …

値が「1」のように特定の条件のセルだけを選別したいような場合には、対象セル内をループして個別に判定してゆくしかないと思われます。
 For Each c in 対象範囲.Cells
  IF cに関する条件式 Then 処理
 Next c

※ ご質問のように行を削除する場合は、上からループすると行がずれますので、削除などを行う場合は行番号の大きな方から逆順にループするのが無難です。
あるいは、直接削除は行わずセル内容の確認だけを行っておいて、最後にまとめて削除を行えばループの順は関係なくなります。
    • good
    • 1
この回答へのお礼

がんばります

とても丁寧な回答をいただきましてありがとうございます。
私には少し難しいですが、理解できるように頑張って勉強したいと思います。
大変感謝しております!

お礼日時:2022/11/05 20:03

No1です。



>ABやKFなどのアルファベット2文字ずつか入っています。
>その場合、具体的にはどのようになりますでしょうか
「アルファベット2文字」というのが、直接の入力値で関数等で表示しているのでなければ、「定数」と見做せます。

その場合であれば、ご提示の方法を流用して
Range("A1:A10").SpecialCells(xlCellTypeConstants).EntireRow.Delete
で、できるでしょうというのがNo1の回答の前半です。
(空白セルと関数が設定されているセルは残ります)

後半に述べた内容の具体的な例は、No2様が回答なさっていますので、そちらをご覧ください。
    • good
    • 0
この回答へのお礼

あなたに会えてよかった

追加質問にも回答くださいまして、大変ありがとうございます。
なるほど、こちらで試してみますね!
とてもわかりやすくてたすかりますm(__)m

お礼日時:2022/11/05 22:51

どちらも、forループでチェック&削除するしか有りません。



For Cnt = 10 To 1 Step -1
If Range("A" & Cnt).Value = "" Then
  Range("A" & Cnt).EntireRow.Delete
End If
Next Cnt


中身が1の時は
If Range("A" & Cnt).Value = 1 Then
    • good
    • 0
この回答へのお礼

助かりました

回答ありがとうございます!
とてもわかりやすいです。
こちらを入れてやってみたいと思います。
大変たすかりました。

お礼日時:2022/11/05 19:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!