[[20190620142911]] 『マクロ 特定列に文字が入力されている行を削除す』(ぷぃきゅA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ 特定列に文字が入力されている行を削除する』(ぷぃきゅA)

マクロに関して初心者なのでお尋ねします。

C列にIF関数で退社と表示されている人を削除したいのですが、


      ↓=IF(B1="","","退社")
  A B C  D 
 
1 あ い 退社 ←行削除

2 う 

3 お か 退社 ←行削除

4 き 


ネットから何度か検索して下のようにマクロを組んだのですが、
IF関数の"退社"も認識されて全行が削除されてしまいます。

C列に【退社】と表示されている人のみ行が消えるようなコードはありませんか?


Sub PUIKYUA()
  Sheets("シート").Select
  Application.ScreenUpdating = False
  Do While (True)
    Columns("C:C").Select
    Set mySelect = Selection.Find(What:="退社", LookAt:=xlWhole)
    If mySelect Is Nothing Then Exit Do
    Rows(mySelect.Row).Select
    Selection.Delete Shift:=xlUp
  Loop
  Application.ScreenUpdating = True
End Sub

若しくは「B列に何でもいいので文字さえ入力されていたら行を削除する」
でも同じ事ができると思うので、

分かる方がいらしゃいましたら教えてください。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


Findなんて小技を使わず、素直にセル値を確認するループで良いのでは?
 Sub test()
    Dim i As Long

    Application.ScreenUpdating = False
    With Sheets("シート")
        For i = .Cells(.Rows.Count, "C").End(xlUp).Row To 1 Step -1
            If .Cells(i, "C").Value = "退社" Then
                .Rows(i).Delete Shift:=xlUp
            End If
        Next i
    End With
    Application.ScreenUpdating = True
 End Sub
(???) 2019/06/20(木) 15:18

 >Set mySelect = Selection.Find(What:="退社", LookAt:=xlWhole)
 を、下記に変更
 Set mySelect = Selection.Find(What:="退社", LookAt:=xlWhole, LookIn:=xlValues)

 もしB列が手入力であるなら、こんな感じでも
 Sub test()
     Dim rng As Range
     Set rng = Columns("b").SpecialCells(2, 2)
     On Error GoTo 0
     If Not rng Is Nothing Then rng.EntireRow.Delete
 End Sub
(seiya) 2019/06/20(木) 15:19

(???)さん、(seiya)さん

回答ありがとうございます。
お二方のデータを入力したら無事退社のみ行が消えました。

色々と勉強になりました!ありがとうございます!
(ぷぃきゅA) 2019/06/20(木) 15:40


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.