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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Excel(エクセル) エクセル 多数のファイルから値を抜き出したい 4 2022/12/12 16:49
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) Excelで、別シートへ情報を参照表示する関数について。 2 2023/06/26 09:58
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
顧客CDのCDって?
-
突合結果はプルーフリストのことか
-
ファイルメーカー リスト形式...
-
エクセルデータのマッチング
-
エクセルでのデータ拾い
-
エクセルマクロ ブックをアクテ...
-
アクセス ACCESS VBAで入力の...
-
現在、日興証券で重大なトラブ...
-
顧客データと請求書、売上帳を...
-
エクセル2010の書類を整理・保...
-
リストボックスからシート削除...
-
【エクセル】TextBoxの数値の入...
-
EXCELシート内の数字での並び替...
-
エクセルで、毎月顧客管理して...
-
読み取ったQRコード/バーコード...
-
エクセルでバーコード作成し使...
-
クロネコヤマトで、バイトして...
-
EXCELでバーコードを作成すると...
-
振込請求書が破れてしまいました
-
商品に印字してあるバーコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
現在、日興証券で重大なトラブ...
-
顧客CDのCDって?
-
<新設税理士事務所です>ミロ...
-
エクセルで「3次元配列」表の...
-
VBA リストボックス反映できない
-
VBA。リストボックスの値を別の...
-
エクセルVBA テキストボックス検索
-
EXCELシート内の数字での並び替...
-
エクセルデータ。容量を減らす...
-
エクセルで並び替えするとハイ...
-
データ型が一致しない?
-
エクセルで顧客の継続率
-
エクセルの数式で教えてください。
-
エクセルでのデータ作成(数値...
-
アクセスでのデータ抽出方法
-
Excel 指定した固有番号で、複...
-
お客さんの来店間隔が知りたい...
-
ソフトウェア開発会社とはどん...
-
エクセルで前年比データを作成...
-
ブラウザを使ったFTPサーバへの...
おすすめ情報