[[20140911100657]] 『AutoFilterについて』(秋雨) ページの最後に飛ぶ

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

 

『AutoFilterについて』(秋雨)

おたずねします。
下記のコードでSelection.AutoFilter Field:=3, Criteria1:="0412"の箇所しか抽出しないときは、
Selection.AutoFilter Field:=4, Criteria1:="0100"の箇所は、前に'を付けています。
もう少し使いかっての良い方法を指南下さい。

Sub Filter_2013()

        Range("B3:M3").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=3, Criteria1:="0412"
        Selection.AutoFilter Field:=4, Criteria1:="0100"
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 フィルタは 0412 と 0100 との2種類の組合せ固定なのでしょうか。
 直感的なのはマクロ自体を分けてしまうか、セルに条件を記載するか、
 程度の工夫だと思いますが。

 後者であれば、こんな感じで。
http://www.atmarkit.co.jp/ait/articles/1407/15/news028.html
(Mook) 2014/09/11(木) 11:17

(Mook)さん
IF...Thenで考えていますが苦心しています。

(秋雨) 2014/09/11(木) 15:14


 何を条件にしたいのでしょうか。それ次第だと思いますが。

 例えばアクティブセルを条件にすれば、こんな処理もできるかと思います。

 Sub Filter_Sample()
    If ActiveSheet.AutoFilterMode Then
        ActiveSheet.AutoFilterMode = False
    End If
    With ActiveSheet.Range("B3:M3")
        .AutoFilter
        Select Case ActiveCell.Column
        Case 4 '// D列にアクティブセルがあれば
            .AutoFilter Field:=3, Criteria1:="0412"
        Case 5 '// E列にアクティブセルがあれば
            .AutoFilter Field:=4, Criteria1:="0100"
        Case Else '// D、E列以外にアクティブセルがあれば
            .AutoFilter Field:=3, Criteria1:="0412"
            .AutoFilter Field:=4, Criteria1:="0100"
        End Select
    End With
 End Sub

(Mook) 2014/09/11(木) 16:06


(Mook)さん
おはようございます。
お世話になります。
少し使いやすく改良しました。
勝手な希望なのですが、.AutoFilter Field:=4, Criteria1:="0100"が空の時は
 .AutoFilter Field:=3, Criteria1:="0412"の検索だけで抽出したいのですができるでしょうか?
いま、こうなっています。
Sub Filter_Sample_b()
    If ActiveSheet.AutoFilterMode Then
        ActiveSheet.AutoFilterMode = False
    End If

    With ActiveSheet.Range("B3:M3")
        .AutoFilter
        Select Case ActiveCell.Column
        Case 4 '// D列にアクティブセルがあれば
            .AutoFilter Field:=3, Criteria1:=Range("AD2").Value
        Case 5 '// E列にアクティブセルがあれば
            .AutoFilter Field:=4, Criteria1:=Range("AE2").Value
        Case Else '// D、E列以外にアクティブセルがあれば
            .AutoFilter Field:=3, Criteria1:=Range("AD2").Value
            .AutoFilter Field:=4, Criteria1:=Range("AE2").Value
        End Select
     End With
End Sub

(秋雨) 2014/09/12(金) 09:56


 指定セルがもともと決まっているのであれば、今回のような指定ではなく
    With ActiveSheet.Range("B3:M3")
        .AutoFilter
        IF Range("AD2").Value <> "" Then  .AutoFilter Field:=3, Criteria1:=Range("AD2").Value
        IF Range("AE2").Value <> "" Then  .AutoFilter Field:=4, Criteria1:=Range("AE2").Value
    End With
 でもよいのでは?

(Mook) 2014/09/12(金) 12:11


(Mook)さん
お世話になります。
ドンピシャです。ありがとうございました。
私は考えがまとまらずこんなのを書いてだめだなーと落ち込んでいました。
     If Application.CountIf(Range("E4:E2000"), Range("AE2").Value) = 0 Then
        MsgBox "該当なし"
     Exit Sub

(秋雨) 2014/09/12(金) 13:54


コメント返信:

[ 一覧(最新更新順) ]


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