| 
    
     |  | ▼kanabun さん masui です:> 以前下記の解答をいただきましたものです
 これで全て解決したのですが
 一点疑問が出ましたので再度質問させてください
 
 1)A4セルには "2012/10/20 AM"のような文字列が代入されていれば
 > [E2] FALSE
 > [E3] TRUE
 となるはずなのですが
 [E2] #VALUE
 [E3] TRUE
 となります しかし 検索はちゃんと抽出されています
 [E2] がなぜFALSEにならないのでしょうか
 
 
 2)A4セルに 2010/10/15 のような2012年でない日付(数値)が入っていれば
 [E2] FALSE
 [E3] FALSE
 となりますが TRUEでなくても "2012"の行が抽出されます
 [E2] =YEAR(一覧!A4)=2012
 [E3] =LEFT(一覧!A4,4)="2012"
 となっていればよいのでしようか
 よろしくお願いします
 
 
 >たとえば 年が2012 文字列のときは "2012" の行を抽出したいとして、
 >変数を使わずに [E1:E3]の条件範囲の内容を記述すると、
 >
 >[E1] (ここは空白にします)
 >[E2] =YEAR(一覧!A4)=2012   ← 一覧!A4(最初のデータセル)の年が2012
 >[E3] =LEFT(一覧!A4,4)="2012" ← 一覧!A4 の前4文字が "2012" である
 >
 >と、このように書きます。
 >E2とE3 の条件式は 検索対象範囲の「代表として」A4セルを対象とする式を
 >書いておきます。数式で条件を書いていますから、「たまたま」A4セルが
 >2012/10/20 のような日付型(数値)が代入されていれば
 > [E2] TRUE
 > [E3] FALSE
 >となりますし、「たまたま」A4セルには "2012/10/20 AM"のような文字列が
 >代入されていれば、
 > [E2] FALSE
 > [E3] TRUE
 >となりますし、A4セルに 2010/10/15 のような2012年でない日付(数値)が
 >入っていれば
 >
 >> [E2] FALSE
 >> [E3] FALSE
 >
 >となりますが、それでかまいません。AdvancedFilterで [E2]の条件式と
 >[E3]の条件式が書いてあるときは、[E2]条件 または(OR) [E3] 条件 の
 >かたちで検索が実行されます。もちろん
 >  =YEAR(一覧!A4)=2012
 >と書いてあっても、A4以下すべてのA列該当セル にたいして条件が適用
 >されます。
 >
 >なお、
 >> [E2] =YEAR(一覧!A4)=2012
 >> [E3] =LEFT(一覧!A4,4)="2012" ← 一覧!A4 の前4文字が "2012" である
 >
 >の[E3]のほうですが、「文字列の先頭4文字が "2012"という文字である」と
 >いう式なので、マクロで書き込むときは 式全体を "" で囲みますから、
 > [E3] "=LEFT(一覧!A4,4)=""2012"""
 >のように "2012" を ""2012"" となるようにします。
 >
 >
 >補足
 >[E1]には文字を入れることもできます。ただし、[A3]の列見出しと
 >同じ文字列ではダメです。どうしても何か文字列を入れておきたいのなら
 >[A3]の文字列とは異なる文字列にしてください。
 
 
 |  |