EXCELの顧客管理表に検索機能を追加したいと思っています。
概要は以下の通りです。
・Sheet1を顧客データ一覧、Sheet2を検索用シートとし、Sheet2の上段に検索したい
単語又は日付を入れ検索ボタンを押すと、Sheet1のリストからデータを抽出しSheet2中段以降に
表示、が理想です。
・Sheet1の顧客データは、毎日数行ずつ追加します。
項目は「日付」「顧客名」などB1~M1まで入っています。
似た質問を調べ、↓の状態までは設定できました。
・Sheet2のB1~M1にSheet1同様の項目を作っておき、抽出したい項目の2行目に
検索対象文字を入れる。
(例 B1の項目が日付の場合、B2に”2007/01/16”)
Sheet2に作った「検索ボタン」を押すと、Sheet2の4行目
以降に検索対象文字を含むデータが抽出される。
(4行目にもSheet1同様の項目を入れています。)
ちなみに、検索ボタンのマクロの内容は以下の通りです。
Private Sub 検索_Click()
Worksheets("顧客入力").Range("顧客データ").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B4:M5"), CopyToRange:=Range("B8:M1063"), Unique:=False
End Sub
※顧客データ・・・Sheet1の顧客リストに定義している名前
※顧客入力・・・Sheet1の名前
これで基本的な検索はできるようになったのですが、日付指定に関して足りない部分があります。
特定の日付指定は可能なのですが、2007/01/01~2007/01/31のような範囲の指定ができません。
また、文字列の検索で「~から始まる」検索は出来るのですが「~を含む」検索が出来ません。
マクロ初心者なのでどこをどう変えればいいのかが分からず困っています。ご教授いただければ助かります。
No.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 メソッドで行います。
大変遅くなりまして申し訳ありません。
少しずつですが、アドバイスを参考に改良を加えています。
また分からないことが出てきた時は質問させて頂こうと思っています。
ありがとうございました。
No.1
- 回答日時:
こんばんは。
>特定の日付指定は可能なのですが、2007/01/01~2007/01/31のような範囲の指定ができません。
これは、VBAの問題ではありませんね。
2007/01/01 ~ 2007/01/31
ワークシートに、Criteria 部分を置いているのでしょうから、その部分を以下のようにしてください。
Criteria の部分(AND 検索の場合は、横に並べます)
日付 日付
= ">=" &("2007/01/01")*1 |= "<=" & ("2007/01/31")*1
お返事が遅れまして申し訳ありません。
そういえばそうでした…おかげさまで日付検索に関しては解決しました^^
ありがとうございます。
恐縮なのですが、「~を含む」検索の指定の方法に関して指定の方法などご存知ないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
顧客CDのCDって?
-
エクセルで「3次元配列」表の...
-
アクセスでのデータ抽出方法
-
Excelを使った顧客データと受注...
-
データの受け取り先について ホ...
-
Filemaker6、チェックボックス...
-
エクセルで顧客の継続率
-
エクセルで並び替えするとハイ...
-
VBA リストボックス反映できない
-
<新設税理士事務所です>ミロ...
-
アクセス2007 フォームで入力...
-
エクセルの表から特定のデータ...
-
メーリング・同報に便利なメー...
-
読み取ったQRコード/バーコード...
-
EXCELでバーコードを作成すると...
-
バーコードってダブらない?
-
バーコードコントロールが印刷...
-
国内線航空券をJALのアプリにて...
-
振込請求書が破れてしまいました
-
バーコードリーダー だけで E...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<新設税理士事務所です>ミロ...
-
エクセルで「3次元配列」表の...
-
顧客CDのCDって?
-
VBA リストボックス反映できない
-
VBA。リストボックスの値を別の...
-
エクセルで顧客の継続率
-
エクセルの数式で教えてください。
-
アクセスでのデータ抽出方法
-
EXCELシート内の数字での並び替...
-
【ExcelVBA】顧客別に抽出デー...
-
データ型が一致しない?
-
抽出してコピペ 検索すべき文...
-
EXCELで注文書作成
-
スプレッドシートの関数につい...
-
対象月の2桁表示について
-
VBA beforeprintについて
-
エクセルで、毎月顧客管理して...
-
顧客管理システム(ASP、パッケ...
-
エクセルで並び替えするとハイ...
-
販売管理、顧客管理、会計まで...
おすすめ情報