[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『☆マークから☆マークまで行非表示』(☆マーク)
B列に☆がランダムに入力されています。
☆の入力されているセル右のC列に◯が入力された場合
一つ下の行から次に☆が入力されている一つ上の行までを
非表示にしたいのですが方法を教えていただけますか?
◯を消すと表示されると尚良いです。
宜しくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
B列の星のほうが変更されることはあるのか?
たとえばC列に○が入っている行のB列に☆が入れられてその場合にその下の行から次に星の入っている行の上まで 非表示にするということはあるのか?
また、右横に○が入力された☆のある行より下に☆がない場合はどうするのか? (ねむねむ) 2016/05/27(金) 13:06
B列の星のほうが変更されることはあるのか?
行を増やしたり削除したりしますので間の行数は変わります
たとえばC列に○が入っている行のB列に☆が入れられて
その場合にその下の行から次に星の入っている行の上まで
非表示にするということはあるのか?
◯を入れるのは必ず☆の右横です。
☆の無い右横はなにも入力しません。
また、右横に○が入力された☆のある行より下に
☆がない場合はどうするのか?
すいません、考えていませんでした。
D列にデータが入力されている行までです。
もしくは最終行に☆を入力しておきます。
宜しくお願いします。
Dim rg As Range, nr As Long If Target.Count <> 1 Then Exit Sub If Target.Column <> 3 Then Exit Sub If Target.Offset(, -1).Value <> "☆" Then Exit Sub If Target.Offset(1, -1).Value = "☆" Then Exit Sub Set rg = Target.Offset(1, -1).End(xlDown) If rg.Value = "☆" Then nr = rg.Row - 1 If nr < 1 Then Exit Sub If Target.Value <> "○" Then Rows(Target.Row + 1 & ":" & nr).EntireRow.Hidden = False Else Rows(Target.Row + 1 & ":" & nr).EntireRow.Hidden = True End If End Sub (mm) 2016/05/27(金) 14:02
C列の変更(○を○以外、あるいは○以外から○)や、B列、C列の複数セル変更(クリアやコピペやフィルコピー)も対応してみました。
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Dim f As Range Dim c As Range
If Intersect(Target, Columns("B:C")) Is Nothing Then Exit Sub
Application.EnableEvents = False Application.ScreenUpdating = False
Rows.Hidden = False
With Range("A1", UsedRange)
.Columns("B").Replace What:="☆", Replacement:="#N/A", LookAt:=xlWhole On Error Resume Next Set r = .Columns("B").SpecialCells(xlCellTypeConstants, xlErrors) On Error GoTo 0
If Not r Is Nothing Then r.Value = "☆" For Each c In r If Not f Is Nothing Then Range(f.Offset(1), c.Offset(-1)).EntireRow.Hidden = True If c.Offset(, 1).Value = "○" Then Set f = c Else Set f = Nothing End If Next End If
End With
Application.EnableEvents = True
End Sub
(β) 2016/05/27(金) 17:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.