- ベストアンサー
【EXCEL】顧客管理表に検索機能を追加したい
- EXCELの顧客管理表に検索機能を追加したいと思っています。シート1を顧客データ一覧、シート2を検索用シートとし、シート2に検索したい単語又は日付を入れ検索ボタンを押すと、シート1のリストからデータを抽出しシート2に表示する機能を実装したいです。
- シート1の顧客データは毎日数行ずつ追加され、項目は「日付」「顧客名」などが入っています。現在は類似質問を調査し、一部検索機能を設定できましたが、特定の日付範囲の指定や文字列の含む検索ができない状況です。
- マクロ初心者であり、どの部分を変更すれば特定の日付範囲の指定や文字列の含む検索ができるのかわかりません。ご教授いただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。#1のWendy02です。 >「~を含む」検索の指定の方法に関して指定の方法 AdvancedFilter は、VBA内部には、その方法はないですね。AutoFilter のようにいけば面白いのですが、そうはならないようです。つまり、CriteriaRange の部分は、ワークシートに依存しているわけです。 本来、Criteria 部分は、人がワークシートに書き入れるものなので、 CriteriaRange:= を変数に置きまして、 Private Sub 検索_Click() Dim CriteArea As Range Set CriteArea =Range("B4").CurrentRegion 'ただし、CriteArea は、他のデータに隣接せず、独立した場所 Worksheets("顧客入力").Range("顧客データ").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=CriteArea, CopyToRange:=Range("B8:M1063"), Unique:=False End Sub というように作ってやるぐらいが関の山なのです。 だから、"検索_Click()" とボタンにするのではなくて、Worksheet_Change イベントで、CriteriaRange で反応させるように作ることも多いです。一種の関数のように使います。 そうでなければ、最初から、AdvancedFilter なしで作るのですが、方法としては、AutoFilter から、条件を入れてあげる方法です。そちらには、「Operator:=xlAnd = かつ~(条件)」があります。CopyToRange の部分は、実際に、Copy メソッドで行います。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >特定の日付指定は可能なのですが、2007/01/01~2007/01/31のような範囲の指定ができません。 これは、VBAの問題ではありませんね。 2007/01/01 ~ 2007/01/31 ワークシートに、Criteria 部分を置いているのでしょうから、その部分を以下のようにしてください。 Criteria の部分(AND 検索の場合は、横に並べます) 日付 日付 = ">=" &("2007/01/01")*1 |= "<=" & ("2007/01/31")*1
お礼
お返事が遅れまして申し訳ありません。 そういえばそうでした…おかげさまで日付検索に関しては解決しました^^ ありがとうございます。 恐縮なのですが、「~を含む」検索の指定の方法に関して指定の方法などご存知ないでしょうか?
お礼
大変遅くなりまして申し訳ありません。 少しずつですが、アドバイスを参考に改良を加えています。 また分からないことが出てきた時は質問させて頂こうと思っています。 ありがとうございました。