• ベストアンサー

エクセルのマクロで・・・?

エクセルの表で、日付の列を検索したいのですが・・・。 例えば A列に名前 B列に誕生日があるとして、ある期間の誕生日の人を検索したい。とします。 普通にやるならデータ→フィルタ→オートフィルタ→条件をいれて・・・・。となると思うんですが、これをボタン一つで、できるようにしたいんです。 さらに、条件は特定のセルに調べたい期間を入力するようにしたいのです。 エクセルは2000です。 わかりにくい説明で申し訳ないのですが、宜しくお願いします。

noname#2643
noname#2643

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

再びこんにちは。 ↓これに近い現象のようですね。 http://support.microsoft.com/default.aspx?scid=kb;ja;JP416875 DateValueは短い日付を使うのでYMDをMDYで認識しているのでしょうか? こちらはExcel97なので、同様の現象は起こりません。 苦肉の策です。 Excel97では動作しましたが、2000だと解かりません。 Sub DateIn2() Const myMsg = "西暦で指定(例)2002/11/1" Dim startDate, endDate On Error GoTo ER: With ActiveSheet  .UsedRange.AutoFilter   startDate = DateChange _    (Application.InputBox(myMsg, "開始日", Type:=2))   endDate = DateChange _    (Application.InputBox(myMsg, "終了日", Type:=2))   .UsedRange.AutoFilter Field:=2, Criteria1:=">=" & startDate, _    Operator:=xlAnd, Criteria2:="<=" & endDate End With ER: End Sub '--------------------------------------------------------- Function DateChange(myDate) As Variant Dim y, m, d  myDate = Format(myDate, "yyyy/mm/dd")   y = Left(myDate, 4)   m = Mid(myDate, 6, 2)   d = Right(myDate, 2)  myDate = Format(DateSerial(y, m, d), "##0")  DateChange = myDate End Function

noname#2643
質問者

お礼

再回答ありがとうございます。 できました。 とてもたすかりました。 本当にありがとうございました。

noname#2643
質問者

補足

ごめんなさい。 条件を入れるところを特定のセルに設定するにはどうしたらいいですか。 甘えっぱなしで、すみません。

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

こんにちは。 サンプルです。 コピーブックなど、テスト環境で試して下さい。 Sub DateIn() Const myMsg = "西暦で指定(例)2002/11/1" Dim startDate, endDate On Error GoTo ER: With ActiveSheet  .UsedRange.AutoFilter   startDate = DateValue _    (Application.InputBox(myMsg, "開始日", Type:=2))   endDate = DateValue _    (Application.InputBox(myMsg, "終了日", Type:=2))   .UsedRange.AutoFilter Field:=2, Criteria1:=">=" & startDate, _    Operator:=xlAnd, Criteria2:="<=" & endDate End With ER: End Sub

noname#2643
質問者

補足

回答ありがとうございます。 マクロを実行するとフィルターはかかるんですが、上手く目的の期間が抽出されません。 期間を 開始日:2002/6/1 終了日:2002/6/25 としてやってみたんですが フィルターのオプションを見てみると条件が 2001/2/6 以上 2025/2/6 となっています。 お手数おかけしてすみません。追加でご回答をお願いいたします。

回答No.1

初めまして。サンプルマクロを組んでみました。参考にしてみて下さい。 ボタンの代わりにA1とB1をスイッチに使っています。例えば3月1日~5月31日までを抽出したければ、A1に3月1日・B1に5月31日と入力します。誕生日の入力方法と同じように入力して下さい。B1を抜けた時点で抽出された結果が表示されます。下記のコードをSheet1のモジュールシートにコピー&ペーストして下さい。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myMon1 As String Dim myMon2 As String If Target.Address <> "$B$1" Then Exit Sub myMon1 = Range("A1").Value: myMon2 = Range("B1").Value Rows("2:2").AutoFilter Selection.AutoFilter field:=2, Criteria1:=">=" & myMon1, Operator:=xlAnd, Criteria2:="<=" & myMon2 End Sub ご不明な点・不具合等がございましたら、遠慮なくお知らせ下さい。

noname#2643
質問者

お礼

回答ありがとうございます。 さっそくやってみます。

関連するQ&A

  • エクセルのマクロで・・・再

    エクセルの表で、日付の列を検索したいのですが・・・。 例えば A列に名前 B列に誕生日があるとして、ある期間の誕生日の人を検索したい。とします。 普通にやるならデータ→フィルタ→オートフィルタ→条件をいれて・・・・。となると思うんですが、これをボタン一つで、できるようにしたいんです。 さらに、データがシート1にあるとしたら、条件はシート2のA2とB2に入力した日の間となるようにしたいのです。 エクセルは2000を使用しています。 以前にも同じ様な内容で教えて頂いたのですが、条件の入れ方が少し違いまして・・・。 ごめんなさい。どなたか教えて下さい。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • excel 2003 オートフィルタ!

    excel 2003で、オートフィルタがうまくいきません。 A列の2行目から、1~5までの数字がランダムに並んでいるとします。 A1セルをオートフィルタし、 条件を、オプション>3を含む で指定すると、3がフィルタされてほしいのですが 1つも抽出されません。 3で始まるもだめでした・・ フィルタで抽出するマクロをくんでいて 列は、20列以上あり、 列によって、文字や数値があります。 フォームで列を選び、検索文字を入力して Criteria1:="=*" & 検索文字 & "*", Operator:=xlAnd と言う感じでフィルタしています。 文字はできますが、数値ができないのは、なぜでしょうか・・・

  • エクセルのオートフィルターの使い方

    エクセル2010で1000行程度の表からオートフィルターで必要な情報を抽出しているのですが、該当する条件を▼セルで探すのも面倒なので、所定のセルに条件を入力したらオートフィルターで抽出できる方法があれば教えてください。

  • エクセル 検索マクロ オートフィルタでする方法

    はじめまして。 エクセルで上部にテキストボックスと検索ボタンを作り、 検索ボタンを押したらテキストボックスの内容を 検索し、オートフィルタで抽出するマクロを作りたいのですが、 いくら頑張ってもエラー等で作れません。 どなたかご教授ください。 A列に用語、B列に用語の説明、C列に用語の分野というシンプルな 用語集というデータです。 主にA列の用語をテキストボックスに入力し検索ボタンで検索。 部分一致でも検索され、一致するものを オートフィルタ同様に抽出するというマクロです。 結果がなければボアアップウインドウでありませんっとか出るようにしたいです。 何卒よろしくお願いいたします。

  • Excelのオートフィルタについて

    Excel2002にて、ある列の表示形式が「日付」になっているのですが、オートフィルタによるオプションの検索にて、検索ができません。 例えば、その列のあるセルに1月26日とあるのですが、オートフィルタのオプションでの検索に「1月」とか「26」とかにして、「その文字を含む」で検索をかけてもでてこないのです。 やりたいことは、1月だけの情報をオートフィルタにて表示させたいのですが、どうすれば、うまく検索してくれますか?

  • エクセルでセルの検索

    エクセル2000で複数検索条件に当てはまるセルの個数を関数で処理したいのですが、何かいい方法はありますか? たとえば、 A列 日付(2004/12/11など) B列 状態(○or×) C列 会社名(A社など) となっていて、 A列が「2004/12/11」でB列が「○」でC列が「A社」の条件を満たすセルの個数を知りたいなどです。 オートフィルターで絞り込むようなイメージです。 この結果を値として欲しいのです。 宜しくお願いします。

  • エクセル関数

    エクセルで表のA列に1年分の日付を入力してあります。(A2からA366まで) 特定のセル(A1)をクリックすると、今日の日付のセルにジャンプできるような 関数はありますか?よろしくお願いいたします。

  • エクセルのオートフィルタオプションで日付を出したい。

    いつもお世話になっています。エクセルで、70人の名簿があるので、オートフィルタで「1月生まれ」の人だけを抽出したいです。 A: 「生年月日」という列に、70名それぞれの生年月日が入っている。1980年の7月26日生れなら「1980/7/26」と入力。 B: オートフィルタオプションで「(/1/)を(含む)」と条件づけるが、1件も抽出できない。 C: でも、検索で「(/1/)の(値)」を検索すると、ちゃんとヒットする。 あ: セルの表示形式→日付を「1980年7月26日」に変更してみる。 い: オートフィルタオプション「1月を含む」ではやはり1件も抽出できない。 う: でも「1月」を検索すると、ちゃんと1月と11月生まれの人がヒットする。 どうしても生まれ月ごとに抽出したいと思います。やはり、生年月日を「年」「月」「日」と別の列に分解するしか方法はないのでしょうか。どうかよろしくお願いします。

  • エクセル 並べ替え コマンドボタン

    エクセル2003で並べ替えをする時に、セルを選択してからツールバーの並べ変えボタンでせずに、オートフィルタのようなセルにコマンドボタンを貼って並べ替えることは可能でしょうか? それとオートフィルタでひとつのシートの中に二つの表を作りそれぞれで並べ替えることは可能でしょうか?

専門家に質問してみよう