マンガでよめる痔のこと・薬のこと

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

このQ&Aに関連する最新のQ&A

A 回答 (3件)

再びこんにちは。



↓これに近い現象のようですね。
http://support.microsoft.com/default.aspx?scid=k …

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

この回答への補足

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

補足日時:2002/11/06 13:57
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/11/03 08:20

こんにちは。



サンプルです。
コピーブックなど、テスト環境で試して下さい。

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

この回答への補足

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

補足日時:2002/11/02 23:04
    • good
    • 0

初めまして。

サンプルマクロを組んでみました。参考にしてみて下さい。
ボタンの代わりに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

ご不明な点・不具合等がございましたら、遠慮なくお知らせ下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/11/02 23:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング