|
▼masui さん:
>▼kanabun さん:
>以下でうまく実行できました
>一つ教えていただきたい点がでました
>
>1)Worksheets("検索条件").Range("E1")に"作成日"
> の項目名を入れておきたいのですが
> 下記では消えてしまいます
>
>1)を解消しようと.Offset(0).Formula = "作成日"を
> 加えました
>2)これで実行しましたが今度はヒットしませんでした
> With Worksheets("検索条件").Range("E1")
> .ClearContents
> .Offset(0).Formula = "作成日"
> .Offset(1).Formula = "=Year(一覧!A4)=" & 作成日
> .Offset(2).Formula = "=Left(一覧!A4,4)=" & 作成日
> End With
>Range("E1")に文字を入れてはダメなでしょうか
たとえば 年が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]の文字列とは異なる文字列にしてください。
|
|