Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13083 / 13646 ツリー ←次へ | 前へ→

【7035】複数条件による検索 渡航隊長 03/8/20(水) 23:41 質問
【7042】Re:複数条件による検索 INA 03/8/21(木) 8:22 回答
【7076】Re:複数条件による検索 渡航隊長 03/8/21(木) 21:14 お礼
【7079】Re:複数条件による検索 渡航隊長 03/8/21(木) 23:55 質問
【7081】Re:複数条件による検索 INA 03/8/22(金) 8:33 回答
【7117】Re:複数条件による検索 渡航隊長 03/8/22(金) 23:14 質問
【7119】Re:複数条件による検索 INA 03/8/23(土) 2:04 回答
【7133】Re:複数条件による検索 渡航隊長 03/8/23(土) 20:46 質問
【7135】Re:複数条件による検索 INA 03/8/23(土) 21:09 回答
【7142】Re:複数条件による検索 渡航隊長 03/8/23(土) 23:41 お礼

【7035】複数条件による検索
質問  渡航隊長  - 03/8/20(水) 23:41 -

引用なし
パスワード
   こんにちは

複数の検索条件で検索結果を表示したいと思っているのですが
よく解らなくて困っています。

例   A  B   C  D  E
  1 01 100 200 300 400
  2 02 150 200 350 400
  3 03 100 250 300 450
  4 04 150 250 350 450
  5 05 150 250 300 400

検索条件(1) Bが100・Dが300
検索結果(1) 01・03

検索条件(2) Bが150・Cが250・Eが400
検索結果(2) 05

このような形で検索をして結果を表示したいと
思っています。
説明が下手で申し訳ありませんが
ご指導の程、よろしくお願いします。
(初心者です)

【7042】Re:複数条件による検索
回答  INA  - 03/8/21(木) 8:22 -

引用なし
パスワード
   一般機能のオートフィルターで、可能だと思います。
マクロ化の必要があるのでしたら、マクロの自動記録でほとんど出来ると思いますよ。

【7076】Re:複数条件による検索
お礼  渡航隊長  - 03/8/21(木) 21:14 -

引用なし
パスワード
   ありがとうございます。
早速やってみます。

【7079】Re:複数条件による検索
質問  渡航隊長  - 03/8/21(木) 23:55 -

引用なし
パスワード
   ベースになるものが出来ました。ありがとうございました。
ただ、今の状況ですと全ての検索条件を入力しないと表示されませんでした。
できれば、検索条件に空白があっても表示されるようにしたいと思っています。
今一度ご指導の程、よろしくお願いします。

【7081】Re:複数条件による検索
回答  INA  - 03/8/22(金) 8:33 -

引用なし
パスワード
   >ただ、今の状況ですと全ての検索条件を入力しないと表示されませんでした。
>検索条件に空白があっても表示されるようにしたいと思っています。
全ての検索条件とどのようなことでしょうか?
ユーザーインターフェースはどのようにしていますか?
ユーザーフォームを使用しているのでしょうか?
全てというのが何を指しているのかよく分かりません。
検索条件が空白であれば、当然、空白が抽出されますが・・・?

もう少し詳しくご説明いただけますか?

【7117】Re:複数条件による検索
質問  渡航隊長  - 03/8/22(金) 23:14 -

引用なし
パスワード
   説明が下手で申し訳ありません。
ユーザーフォームは使用していません。
以下の形でシートに入力しています。

    A  B   C  D  E  F
  1 
  2   100 200 300 400 500  ←ここが検索条件です
  3                ここの値をすべて入力しないと 
  4                検索結果が表示されませんでした。 
  5 
  6  1 100 200 300 400 500
  7  2 110 210 310 410 510
  8  3 100 210 300 410 500

マクロは以下とおりです。

Sub Macro1()

  Range("B5:F5").Select
  Selection.AutoFilter
  Selection.AutoFilter Field:=1, Criteria1:=Range("B2").Value
  Selection.AutoFilter Field:=2, Criteria1:=Range("C2").Value
  Selection.AutoFilter Field:=3, Criteria1:=Range("D2").Value
  Selection.AutoFilter Field:=4, Criteria1:=Range("E2").Value
  Selection.AutoFilter Field:=5, Criteria1:=Range("F2").Value

End Sub

検索条件に空白があっても検索結果を表示したいと思っています。
(例 B2の100の値のみ検索する)
以上です。
よろしくお願い致します。

【7119】Re:複数条件による検索
回答  INA  - 03/8/23(土) 2:04 -

引用なし
パスワード
   理解できました。
引用させて頂いて簡単に書きますと、
検索条件のセルが空白の場合は、
オートフィルターを実行しなければよいので、
IF文で条件分岐すれば良いと思います。

↓このような感じです。

'B2が空白以外の場合、オートフィルターを実行
If Range("B2").Value <> "" Then
 Selection.AutoFilter Field:=1, Criteria1:=Range("B2").Value
End If

【7133】Re:複数条件による検索
質問  渡航隊長  - 03/8/23(土) 20:46 -

引用なし
パスワード
   ありがとうございました。
すごく助かりました。(大感謝です)

すみませんがもう一つお願いがあります。
今のプログラムは検索開始を実行するマクロ(Macro1)と
オートフィルターを解除するマクロ(Macro2)を使用していますが、
追加したいマクロが以下の2つあります。

1.Macro1を2回連続で使用するとエラーとなる。(エラー表示もする)
2.Macro1を実行する前にMacro2を実行するとエラーとなる。(エラー表示もする)

現在のマクロは

Sub Macro1()

   Range("B14:L14").Select
  Selection.AutoFilter
  
  If Range("B4").Value <> "" Then
 Selection.AutoFilter Field:=1, Criteria1:=Range("B4").Value
End If
  
  If Range("C4").Value <> "" Then
 Selection.AutoFilter Field:=2, Criteria1:=Range("C4").Value
End If

  If Range("D4").Value <> "" Then
 Selection.AutoFilter Field:=3, Criteria1:=Range("D4").Value
End If

  If Range("E4").Value <> "" Then
 Selection.AutoFilter Field:=4, Criteria1:=Range("E4").Value
End If

  If Range("F4").Value <> "" Then
 Selection.AutoFilter Field:=5, Criteria1:=Range("F4").Value
End If

  If Range("G4").Value <> "" Then
 Selection.AutoFilter Field:=6, Criteria1:=Range("G4").Value
End If

  If Range("H4").Value <> "" Then
 Selection.AutoFilter Field:=7, Criteria1:=Range("H4").Value
End If

  If Range("I4").Value <> "" Then
 Selection.AutoFilter Field:=8, Criteria1:=Range("I4").Value
End If

  If Range("J4").Value <> "" Then
 Selection.AutoFilter Field:=9, Criteria1:=Range("J4").Value
End If

  If Range("K4").Value <> "" Then
 Selection.AutoFilter Field:=10, Criteria1:=Range("K4").Value
End If

  If Range("L4").Value <> "" Then
 Selection.AutoFilter Field:=11, Criteria1:=Range("L4").Value
End If

End Sub

Sub Macro2()

  Range("B4:L4").Select
    Selection.AutoFilter
  Range("B4").Select
End Sub

申し訳ありませんがよろしくお願いします。

【7135】Re:複数条件による検索
回答  INA  - 03/8/23(土) 21:09 -

引用なし
パスワード
   >追加したいマクロが以下の2つあります。
>1.Macro1を2回連続で使用するとエラーとなる。(エラー表示もする)
>2.Macro1を実行する前にMacro2を実行するとエラーとなる。(エラー表示もする)
エラーになるマクロを作りたいのでしょうか?
エラーが発生するので、エラー表示をさせたいのでしょうか?

よく分かりませんが、以下のような考え方でよいのでしょうか?


【オートフィルター実行】

Sub Macro1()
  'まず、オートフィルタモードを解除しておく。
  ActiveSheet.AutoFilterMode = False

  Range("B14:L14").Select
  Selection.AutoFilter
  
  If Range("B4").Value <> "" Then
 Selection.AutoFilter Field:=1, Criteria1:=Range("B4").Value
End If
  :
  :


【オートフィルタ解除】
Sub Macro2()

 ActiveSheet.AutoFilterMode = False

End Sub

【7142】Re:複数条件による検索
お礼  渡航隊長  - 03/8/23(土) 23:41 -

引用なし
パスワード
   いつも説明が下手ですみません。
エラーではなくてちょっと不具合がありましたので
その不具合を直そうとしていました。

記載して頂いたマクロで全て不具合が解消されました。
本当にありがとうございました。

13083 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free