[[20140905093931]] 『日付と文字列のAutoFilterがうまく出来ない』(ふみ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付と文字列の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


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.