| 
    
     |  | ↑前レス 少し勘ちがいをしていたので、 具体例で一緒に確認してみましょう。
 
 新規シートのA列に フィルタオプションテストするための日付データを
 以下のように書き込んでください。(ほんとに日付ではない日付風データ
 も作ります)
 (A列は、入力値が右詰めか(数値)左詰めに配置される(文字列)かが
 分かりやすいように 「列幅」をすこし横に長くしておいてください)
 
 |    A     |
 1 日付        |
 2     2010/10/25| ←標準書式のまま 2010/10/25 と打ち込む
 3 2012/10/10     | ←表示形式「文字列」にして 2012/10/10と入力
 4 2012/10/20 12:00 AM| ←表示形式「文字列」にして 2012/10/10 00:00AM と入力
 5     2012/11/10| ←標準書式のまま 2010/11/10 と打ち込む
 6 2012/10/10 AM   | ←標準書式のまま 2010/10/10 AM と打ち込む
 
 つぎに、[B2:B6]を選択して 数式ボックスに =YEAR(A2)=2012 と打ち込んでから
 Ctrl+[Enter] で確定してください。
 同じように [C2:C6]範囲を選択して数式ボックスに =LEFT(A2,4)="2012" と打ち
 込んで Ctrl+[Enter] で確定してください。
 以下のような結果になると思います。
 
 |    A     | B   C
 1 日付        |
 2     2010/10/25| FALSE  FALSE
 3 2012/10/10     | TRUE  TRUE
 4 2012/10/20 12:00 AM| TRUE  TRUE
 5     2012/11/10| TRUE  FALSE
 6 2012/10/10 AM   | #VALUE! TRUE
 
 なぜこういう結果になるのか、確認してみます。
 ▼2行目 [A2]は正しい日付(数値)データです。=YEAR(A2)の結果 2010が返ります。
 2010は 2012 ではありませんから [B2]は FALSEとなります。
 ([C2]が FALSE となる理由については あとで考えてみます。実は
 前回の推定、ここに間違いがありました)
 ▼3,4行目は表示形式「文字列」にしておいて入力したデータなので、
 値は文字列です。ただし、文字列でも日付に変換可能な文字列データ
 のときは Year関数が機能します。よって [B3:B4]は Year関数で 2012
 が返ってくるので True となっています。また[A3:A4]は文字列の先頭
 4文字が "2012" なので [C3:C4]は True となります。
 ▼5行目は日付の 2012/11/25 です。Yearは2012を返すので [B4]は
 TRUE となります。つぎに、ここがポイントですが、2012/11/25を
 文字列にすれば 先頭4文字は "2012" ですから[C4]は True になって
 よさそうなのにそうなってません。実はLEFT関数などが日付データ
 などの元は文字列でないデータに適用されるとき、セルの表示値を
 LEFTするのでなく、VALUE()関数で数値化した値を文字列に変換した
 ものが使われています。なので 2行目の 2010/10/25 という日付
 データのLEFT(data,4) は "2010" ではなく 40476 の左4文字 つまり
 "4047" なので、 これは "2012" でないから FALSE であり、
 この4行目の日付 2012/11/25 のLeft(data,4) も 41238 のLeft(,4)
 は "4123" となるから、<>"2012" で FALSE だったのです。
 ▼最後の6行目データは「標準」書式に打ち込んだ値が「正しい日付」
 ではないため、Year関数を使おうとしてエラー(#VALUE!)となって
 います([B6])。[A6]データは日付化不可能な文字列です。
 単なる文字列ですからその左4文字は"2012" で [C6]は True です。
 
 D列に =VALUE(A2) としたときの結果
 |    A     | D
 1 日付        |
 2     2010/10/25|  40476
 3 2012/10/10     |  41192
 4 2012/10/20 12:00 AM|  41192
 5     2012/11/10|  41238
 6 2012/10/10 AM   | #VALUE!
 
 
 |  |