『日付と文字列のAutoFilterがうまく出来ない』(ふみ) こんにちは。教えて下さい。 シートxls_WSのAM列に多数の日付があり、文字列形式で 2014/09/05 という風に書かれています。 別のブックのSheet1にカレンダーコントロールからM1に開始日、R1に終了日を 記入して、その間の日付を取得したいのですが、該当する日付があっても0になります。 xls_WSの日付を日付形式に変換してもダメでしたが、手作業で、 2014/09/05 を 2014/9/5 に修正してAutoFilterを実行すると取得出来ます。 何が原因で、どの様に修正したら良いのでしょうか? よろしくお願いします。 Sheet1.Activate Dim 開始日 As Date Dim 終了日 As Date 開始日 = Sheet1.Range("M1") 終了日 = Sheet1.Range("R1") xls_WS.Activate Columns("AM:AM").Select Selection.NumberFormatLocal = "yyyy/m/d" '"m/d/yy"にしてもダメだった Range("AM12").AutoFilter field:=39 _ , Criteria1:=">=" & 開始日 _ , Operator:=xlAnd _ , Criteria2:="<=" & 終了日 _ , VisibleDropDown:=False < 使用 Excel:Excel2007、使用 OS:Windows7 > ---- >xls_WSの日付を日付形式に変換してもダメでしたが、手作業で、 >2014/09/05 を 2014/9/5 に修正してAutoFilterを実行すると取得出来ます。 表示形式と実数を混同しないでくださいね。 文字列をいくら表示形式を日付にしても文字列のままです。 >Columns("AM:AM").Select >Selection.NumberFormatLocal = "yyyy/m/d" '"m/d/yy"にしてもダメだった こちらの2行を消して Range("AM:AM").TextToColumns DataType:=xlFixedWidth, FieldInfo:=Array(0, 5) を追加してみてください。 (稲葉) 2014/09/05(金) 10:14 ---- 稲葉さん、いつもありがとう御座います。 一発で取得出来る様になりました。 表示形式と実数の関係がよく理解出来ていません。 日付で書かれていても、実数が文字列なら、 表示形式を日付にしても実数は日付のタイプにならない。 実数を日付のタイプにしたら表示形式の日付は2014/9/5になった、 これが実数が文字列の時と日付のタイプの時の表示形式の違い、 という理解で良いでしょうか? 実数のタイプの変換、についてもっと勉強します。 ありがとう御座いました。 (ふみ) 2014/09/05(金) 10:45 ---- >実数が文字列なら 実数は数値のことです。 EXCELの入力値は、数値と文字列に分けられます。 チェックするにはセルの表示形式を標準にすると、すぐ分かります。 日付データならシリアル値で表示されます。文字列なら入力値と同じ表示になります。 (wisemac21) 2014/09/05(金) 11:15 ---- wisemac21さん、ありがとう御座います。 確認してみたら、仰る通り、シリアル値表示と同じ表示になっていました。 数値か文字列で憶える様にします。 ありがとう御座いました。 (ふみ) 2014/09/05(金) 11:59