• 締切済み

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

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

思考実験として考えてください。 言いたいことは、日付けも数も変らないと言うことです。 (1)Sheet1のA1:A5にテストデータとして 2002/1/30 2002/3/5 2002/5/3 2002/4/3 2002/6/12 といれてください。 A1:A5は書式は日付けになり、値は日付けシリアル値 37286 37320 37379 37349 37419 になります。(書式-セル-数値) (2)Sheet2のA2:B2に  2002/4/30 、2002/5/30 と入力してください。 値はやはり、日付けシリアル値として 37376 37406 になります。 (3)値になったものを見つめていれば、Sheet1の37286、 37320、37379、37349、37419の中から >37376、<37406 の数を 求めるのは、質問に値しないでしょう。 (4)Sheet1のA1:A5の書式を「日付け」且つ「1997/3/4 」をクリックして、西暦日付けに直し、下記を実行すると、「02/5/3」 が選べます。 Sub test03() Worksheets("sheet1").Select For i = 1 To 5 If Worksheets("sheet1").Cells(i, 1) > 37376 _ And Worksheets("sheet1").Cells(i, 1) < 37406 Then MsgBox Cells(i, 1) End If (5)以上から、上記のように考えられるためには、A1:A5とA2:B2 の内容が、日付け形式で入っていることがポイントです。 A2:B2などに、文字列として入っていると、関数などで、日付け形式に 戻すと易しくなります。文字列のまま考えると、2002/12/1(2桁月)と 2002/4/3(1桁月)などの比較する場合でややこしくなります。

noname#2643
質問者

お礼

回答ありがとうございます。 ちょっと、難しいですがお勉強になりました。 ありがとうございます。