dポイントプレゼントキャンペーン実施中!

添付画像のようにExcelの1シート上に、A1に「東京受付, 名古屋受付, 大阪受付」、E1に「入荷, 作業, 出荷」の入力規則のプルダウンがあり、A3~G12までフィルターをかけた表があります。

マクロでA1で場所を選択すると、A3で場所に対応した抽出が行われ、
その抽出を維持したままE1で区分を選択すると、E3~G3のいずれかで区分に対応した、今月分の抽出を行いたいのですが、どのようなコードを記述すればよいでしょうか?

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

「Excelでプルダウンからフィルターの抽」の質問画像

A 回答 (2件)

こんばんは!



画像通りの配置とします。
尚、A1・B1セルを結合されているみたいですが、結合は解除しA1セルとE1セルのみがプルダウンとします。
(結合セルがあるとA1セルを空白にした場合、エラーになるため)

尚、お示しの画像を拝見すると
A1 → 東京受付
A4以降 → 東京
のようになっていますが、本来であれば
どちらかに揃えるのが一般的だと思います。
(E~G列も同様 → E1セルが「入荷」となっているがE3セルは「入荷日」となっている)
極力画像通りのデータでやってみました。

↓のコードをシートモジュールにしてみてください。

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim c As Range
 Dim j As Long

  If Intersect(Target, Range("A1,E1")) Is Nothing Then Exit Sub
   With Target
    If .Column = 1 Then
     If .Value <> "" Then
      ActiveSheet.AutoFilterMode = False
      Range("A3").CurrentRegion.AutoFilter field:=1, Criteria1:=Replace(.Value, "受付", "")
      Range("E1").ClearContents
     Else
      ActiveSheet.AutoFilterMode = False
     End If
    Else
     For j = 5 To 7
      With ActiveSheet
       If .AutoFilterMode Then
        If .AutoFilter.Filters(j).On = True Then
         Cells(3, j).AutoFilter field:=j
        End If
       End If
      End With
     Next j
      If .Value <> "" Then
       Set c = Range("A3:G3").Find(what:=.Value & "日", LookIn:=xlValues, lookat:=xlWhole)
        Range("A3").CurrentRegion.AutoFilter field:=c.Column, _
         Criteria1:=">=" & WorksheetFunction.EoMonth(Date, -1) + 1, Operator:=xlAnd, _
         Criteria2:="<=" & WorksheetFunction.EoMonth(Date, 0)
      End If
    End If
   End With
End Sub

※ 細かいエラー処理が必要かもしれませんが
まずはこの程度で・・・m(_ _)m
    • good
    • 1
この回答へのお礼

ご丁寧に教えていただき、誠にありがとうございます。
私の方でもちゃんと動作し、大変助かりました。
ベストアンサーに選ばせていただきました。

お礼日時:2020/04/15 08:56

こんにちは



どの様な状況で利用するのかよくわかりませんけれど・・・

>どのようなコードを記述すればよいでしょうか?
マクロの記録で手操作を記録してみれば、大雑把な雛形ができます。
言ってみれば、だいたいこのようなコードです。

勿論そのままでは実用的ではないでしょうから、フィルターの引数部分にA1セルの値を入れたり、R3~G3の値によって、フィルタの対象とする列を変えるように、部分敵に追加・修正することで、お望みのものになるのではないかと想像します。
    • good
    • 1

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