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

エクセルに関して質問です。

非表示にしたい特定の値は数種類あります。
その値の入った行をすべて非表示にしたいです。

たとえばこんな感じで
B列がH、Jの時、その行を非表示に

シート1
A B
1 名前A F
2 名前B G
3 名前C H
4 名前D I
5 名前E J

シート2
A B
1 名前A H
2 名前B S
3 名前C K
4 名前D T
5 名前E J


シート1
A B
1 名前A F
2 名前B G
4 名前D I

シート2
A B
2 名前B S
3 名前C K
4 名前D T


シートごとに消したい行は変動し行数は約50行、シートは30あります。
なのでマクロで自動にしたいのですが、式がうまくいきません。
再表示する予定はないので非表示のままで大丈夫です。

どうしたらいいか、解決策あれば教えていただきたいです。

A 回答 (2件)

こんばんは!



シート1とシート2だけでよいのですかね?
一例です。
標準モジュールにしてください。

Sub Sample1()
 Dim i As Long, k As Long
 Dim myRng As Range
  For k = 1 To 2 '//←シート見出しの左から1番目と2番目のシート//
   With Worksheets(k)
    For i = 1 To .Cells(Rows.Count, "B").End(xlUp).Row
     If .Cells(i, "B") = "H" Or .Cells(i, "B") = "J" Then
      If myRng Is Nothing Then
       Set myRng = .Cells(i, "B")
      Else
       Set myRng = Union(myRng, .Cells(i, "B"))
      End If
     End If
    Next i
     If Not myRng Is Nothing Then
      myRng.EntireRow.Hidden = True
     End If
   End With
    Set myRng = Nothing
  Next k
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

助かりました

回答ありがとうございます!
上のは作動しました!
シートは30あるので、追加します、、笑

あと、また増えてしまいましたが、、
Dの列に個、個希、0と表示されてるとき、同じように非表示はできますでしょうか。
また、これらの値はVLOOKUPで表示していて、直接打ち込んだものではないです。

お礼日時:2020/05/16 09:32

No.1です。



>シートは30あるので
>Dの列に個、個希、0と表示されてるとき

D列の件に関してはB列の値に関係なく、D列にお示しの3個のいずれかがあればその行の非表示にするのですね。
↓のコードに変更してください。

Sub Sample2()
 Dim i As Long, k As Long
 Dim myRng As Range

  For k = 1 To Worksheets.Count
   With Worksheets(k)
    For i = 1 To .Cells(Rows.Count, "B").End(xlUp).Row
     If .Cells(i, "B") = "H" Or .Cells(i, "B") = "J" Then
      If myRng Is Nothing Then
       Set myRng = .Cells(i, "B")
      Else
       Set myRng = Union(myRng, .Cells(i, "B"))
      End If
     End If
     If .Cells(i, "D") = 0 Or .Cells(i, "D") = "個" Or .Cells(i, "D") = "個希" Then
      If myRng Is Nothing Then
       Set myRng = .Cells(i, "D")
      Else
       Set myRng = Union(myRng, .Cells(i, "D"))
      End If
     End If
    Next i
     If Not myRng Is Nothing Then
      myRng.EntireRow.Hidden = True
     End If
      Set myRng = Nothing
   End With
  Next k
   MsgBox "完了"   
End Sub

これでどうでしょうか?m(_ _)m
    • good
    • 1

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