Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1480 / 13644 ツリー ←次へ | 前へ→

【74117】AdvancedFilterでOR条件の入力方法について masami 13/4/19(金) 9:22 質問[未読]
【74122】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/19(金) 14:32 発言[未読]
【74126】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/19(金) 22:11 質問[未読]
【74127】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/19(金) 22:25 発言[未読]
【74128】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/19(金) 22:39 質問[未読]
【74129】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/19(金) 23:23 発言[未読]
【74130】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/20(土) 8:51 質問[未読]
【74131】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/20(土) 9:47 発言[未読]
【74134】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/20(土) 10:45 発言[未読]
【74144】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/21(日) 12:47 質問[未読]
【74145】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/21(日) 15:16 発言[未読]
【74148】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/21(日) 22:16 お礼[未読]
【74149】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/21(日) 22:16 発言[未読]
【74150】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/22(月) 8:20 発言[未読]
【74152】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/22(月) 11:18 質問[未読]
【74153】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/22(月) 12:26 発言[未読]
【74154】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/22(月) 13:02 質問[未読]
【74155】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/22(月) 14:38 発言[未読]
【74156】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/22(月) 16:09 質問[未読]
【74157】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/22(月) 17:16 発言[未読]
【74160】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/22(月) 17:39 発言[未読]
【74161】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/22(月) 17:41 発言[未読]
【74165】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/23(火) 10:22 質問[未読]
【74166】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/23(火) 10:39 発言[未読]
【74167】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/23(火) 11:54 お礼[未読]
【74158】Re:AdvancedFilterでOR条件の入力方法につ... UO3 13/4/22(月) 17:19 発言[未読]
【74159】Re:AdvancedFilterでOR条件の入力方法につ... UO3 13/4/22(月) 17:22 発言[未読]
【74132】Re:AdvancedFilterでOR条件の入力方法につ... UO3 13/4/20(土) 10:04 発言[未読]
【74133】Re:AdvancedFilterでOR条件の入力方法につ... masami 13/4/20(土) 10:44 お礼[未読]
【74125】Re:AdvancedFilterでOR条件の入力方法につ... kanabun 13/4/19(金) 22:03 発言[未読]

【74117】AdvancedFilterでOR条件の入力方法につい...
質問  masami  - 13/4/19(金) 9:22 -

引用なし
パスワード
   AdvancedFilterを用いて検索をしています
以下のように条件表を作成しました

      検索条件                        
   D列     E列  F列  G列     H列 I列 J列
2行 店名 店名 住所 住所 住所 TEL TEL
3行         *東*                
4行                            

  Sheets(ShtName1).Range("A3").CurrentRegion.AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Worksheets(ShtName3).Range("D2:J4"), _
    CopytoRange:=Sheets(ShtName2).Range("A7"), _
    Unique:=True

 ["F4"]が空白ですとALL条件になり全てが抽出されてしまいます
 CriteriaRange:=Worksheets(ShtName3).Range("D2:J3")
 にすればよいのですが
 他の列でのOR条件の必要がありますので.Range("D2:J4")
 にしています 
 *東*のみ抽出したいのですが["F4"]をどのようにしたらよいのでしょうか?
 よろしくお願いします
 

【74122】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/19(金) 14:32 -

引用なし
パスワード
   ▼masami さん:
>AdvancedFilterを用いて検索をしています
>以下のように条件表を作成しました
>
>      検索条件                        
>   D列     E列  F列  G列     H列 I列 J列
>2行 店名 店名 住所 住所 住所 TEL TEL
>3行         *東*                
>4行                            


その他の条件(店名列、TEL列の抽出条件)がよく分かりません。
また 店名が2つ 住所が 3つ TEL が2つ というのも、具体的に
どういう条件なのか、不明です。

なので、こちらで、適当に サンプル表を作って説明します。
                
1 氏名  住所      TEL
2 abc  東京都文京区  123-4567
3 efg  大阪市浪速区  234-5678
4 hij  南京市太平区  345-6789
5 xyz  北京市東西区  456-7890
6 abb  伊東市西町   567-8901
7 cdd  湖東市柱町   678-9010
8 nnn  西大路市北町  789-0123
9 kkk  東京都三宅島  890-1234

このように、
店名列(フィールド)と 住所列と TEL列が
あって、抽出条件範囲に▼
--------------------------------
氏名    住所    TEL
abc*        
    *東*    
        *345*
--------------------------------
こう書くと、氏名が abc ではじまるか(Or)
住所が 東 を含む か (Or)
TEL に 345 を含む
ものが抽出されます。▼
氏名    住所        TEL
abc    東京都文京区    123-4567
hij    南京市太平区    345-6789
xyz    北京市東西区    456-7890
abb    伊東市西町    567-8901
cdd    湖東市柱町    678-9010
kkk    東京都三宅島    890-1234

同じ表に対し
--------------------------------
氏名    住所    TEL
efg*        
xyz*        
    *東京*    
        *345*
--------------------------------
条件で抽出すれば、
氏名が efg か(OR) xyz ではじまる か
または 住所に 東京を含むか
または TEL に 345 を含む
いずれかに1つ以上該当する(OR条件) の行が
抽出されます▼

氏名    住所    TEL
abc    東京都文京区    123-4567
efg    大阪市浪速区    234-5678
hij    南京市太平区    345-6789
xyz    北京市東西区    456-7890
kkk    東京都三宅島    890-1234

【74125】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/19(金) 22:03 -

引用なし
パスワード
   ▼masami さん:


さらに
-------------------
氏名    住所   
ab*    *東*   
cd*    *東*   
-------------------
のような条件を書けば、これは
氏名が abで始まり、かつ 住所が「東」を含む行
あるいは
氏名が cdで始まり、かつ 住所が「東」を含む行
という意味になり、
以下の3行が抽出されます。

氏名   住所      TEL
abc   東京都文京区  123-4567
abb   伊東市西町   567-8901
cdd   湖東市柱町   678-9010

【74126】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/19(金) 22:11 -

引用なし
パスワード
   ▼kanabun さん 有難うございます


 1 氏名  住所      TEL
 2 abc  東京都文京区  123-4567
 3 efg  大阪市浪速区  234-5678
 4 hij  南京市太平区  345-6789
 5 xyz  北京市東西区  456-7890
 6 abb  伊東市西町   567-8901
 7 cdd  湖東市柱町   678-9010
 8 nnn  西大路市北町  789-0123
 9 kkk  東京都三宅島  890-1234

 2行   住所  住所  住所 
 3行   *大*  *北*  *町*
 4行

 住所を3つにしたのは
 例えば [nnn  西大路市北町  789-0123]を抽出しようとしたためです
 このように抽出条件範囲を作成するとORが空白となり
 全てが抽出されてしまいます
 よろしくお願いします

【74127】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/19(金) 22:25 -

引用なし
パスワード
   ▼masami さん:

> 2行   住所  住所  住所 
> 3行   *大*  *北*  *町*
> 4行
>
> 住所を3つにしたのは
> 例えば [nnn  西大路市北町  789-0123]を抽出しようとしたためです

その条件は1列でかけます。
たとえば、
氏名が abではじまっているか、
または 住所が 「*大*北*町*」である行
を抽出したいなら、
-----------------------------------------
氏名    住所
ab*    
    *大*北*町*
-----------------------------------------
で OK です。

氏名    住所        TEL
abc    東京都文京区    123-4567
abb    伊東市西町    567-8901
nnn    西大路市北町    789-0123

【74128】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/19(金) 22:39 -

引用なし
パスワード
   ▼kanabun さん
 度々すいません 質問がうまくなく
  氏名での検索はしなく
  住所のみの検索でしようと思っています
  2行   住所  住所  住所 
  3行   *大*  *北*  *町*
  4行
  これで[西大路市北町]を抽出しようとしたためです
   ORが空白となり全抽出となります
  このような検索条件の書き方はまずいのでしょうか


  

【74129】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/19(金) 23:23 -

引用なし
パスワード
   ▼masami さん:

>  氏名での検索はしなく
>  住所のみの検索でしようと思っています
>  2行   住所  住所  住所 
>  3行   *大*  *北*  *町*
>  4行
>  これで[西大路市北町]を抽出しようとしたためです

4行 は含めず、
------------------------------------------
>  2行   住所  住所  住所 
>  3行   *大*  *北*  *町*
------------------------------------------

だけを 抽出条件範囲 としてください。


>   ORが空白となり全抽出となります

↑ちょっと意味が分りません。

【74130】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/20(土) 8:51 -

引用なし
パスワード
   ▼kanabun さん
お手数をおかけします
------------------------------------
  2行   住所  住所  住所 
  3行   *大*  *北*  *町*
  4行
------------------------------------
   上記の場合は住所のみを抽出条件とした場合です
   氏名及び住所も抽出条件とする場合もあるので
   抽出条件範囲 として4行までにしました

   問)OR条件(4行目)が空白のときはALL条件となり
     全抽出となり
     またOR条件(4行目)が[=]のときは空白行を
     抽出すると聞きました

   上表の場合OR条件(4行目)が空白となり全抽出となりました
   住所のみを抽出条件とした場合4行目をどのようにしたら
   住所の抽出が可能になるのでしょうか

【74131】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/20(土) 9:47 -

引用なし
パスワード
   ▼masami さん:

>------------------------------------
>  2行   住所  住所  住所 
>  3行   *大*  *北*  *町*
>  4行
>------------------------------------
>   上記の場合は住所のみを抽出条件とした場合です

>   氏名及び住所も抽出条件とする場合もあるので
>   抽出条件範囲 として4行までにしました
いや、だからぁ、「住所のみ」のときと 「氏名及び住所も抽出条件」
のときとを一緒に考えるから、難しくなるのです。

>   住所のみを抽出条件とした場合4行目をどのようにしたら
>   住所の抽出が可能になるのでしょうか

【住所のみを条件】にする場合
(例。住所が 「大」と「北」と「町」を含む条件)は、
すでに何度か出てきているように
---------------------------------
    住所           
    *大*北*町*            
---------------------------------
か、
>------------------------------------
>  2行   住所  住所  住所 
>  3行   *大*  *北*  *町*
>------------------------------------
でいいはずです。

氏名と住所とで抽出したいケース → こちらのほうの具体例を
示してください。日本語で。
その具体例で、実際どうすればよいかを考えてみましょう。

【74132】Re:AdvancedFilterでOR条件の入力方法に...
発言  UO3  - 13/4/20(土) 10:04 -

引用なし
パスワード
   ▼masami さん:

こんにちは

横から失礼します。
条件の指定方法や、条件列として何列必要なのか等々については
引き続き、kanabunさんからご指導があると思います。

現在のお困りのポイント、

・ケースによってはOR条件で4行目も使う場合がある。
・でも条件の行を2行目〜4行目と指定すると、3行目だけに条件があった場合
 つまり、4行目が空白の場合、4行目も条件として扱われ、結果的に全件抽出される。

ここだけに絞って。

現在の記述、CriteriaRange:=Worksheets(ShtName3).Range("D2:J4"), _
これを
CriteriaRange:=Worksheets(ShtName3).Range("D2").CurrentRegion, _
このように書く方法があります。

ただし、(フルに条件がはいった場合、検索条件欄が D2:J4 だとして)
少なくとも、C1:K1 C5:K5 C1:C5 K1:K5 つまり、この検索条件欄を取り囲む
外側の行、列は空白にしておく必要がありますが。

【74133】Re:AdvancedFilterでOR条件の入力方法に...
お礼  masami  - 13/4/20(土) 10:44 -

引用なし
パスワード
   ▼UO3 さん:kanabunさん
  お手数をお掛けしました

 [CriteriaRange:=Worksheets(ShtName3).Range("D2").CurrentRegion, _
 このように書く方法があります。]
 
  試してみましたら何かが見えてきました
  まだ、一部思うようにいかない場合がありましたが
  でも、解決できそうです
  また、分からないヶ所がありましたら再度質問させてください
  有難うございました

【74134】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/20(土) 10:45 -

引用なし
パスワード
   >氏名と住所とで抽出したいケース → こちらのほうの具体例を
>示してください。日本語で。
>その具体例で、実際どうすればよいかを考えてみましょう。

氏名と住所と、2列を抽出条件にする例を考えてみましょう。


【例1】{「氏名」が abではじまり、
    かつ(AND)「住所」に 大、北、町の文字まれている}
  かあるいは(OR)
    {「氏名」が nnではじまり、
    かつ(AND)「住所」に 大、北、町の文字まれている}
ような行↓
---------------------------------------
2  氏名   住所   住所   住所
3  ab*   *大*   *北*   *町*
4  nn*   *大*   *北*   *町*
---------------------------------------
      (3行目も4行目も 同じ住所条件を書いておきます)

先ほどの表にこの条件を当てはめると

氏名   住所   TEL   
nnn   西大路市北町   789-0123   

の1行だけが抽出されます。


【例2】 {「住所」に 大、北、町の文字まれている}
 またはOR{「氏名」が abではじまる}
 またはOR{「氏名」が nnではじまる}
3つの条件のどれかと一致する行↓
         
------------------------------------
2 氏名   住所   住所   住所
3      *大*   *北*   *町*
4 ab*         
5 nn*         
------------------------------------
先ほどの表にこの条件でAdvancedFilterかけると
以下が抽出されます。
         
氏名   住所   TEL   
abc   東京都文京区   123-4567   
abb   伊東市西町    567-8901   
nnn   西大路市北町   789-0123   


だいたい 2フィールド条件で抽出というばあい、
【例1】か【例2】のどちらかが条件になるけれど、
1行で横に並べたら AND条件
たてに記述すれば OR条件 になる
ということがポイントです。(条件範囲で空白部分は
全抽出になる、ということはいってみれば当然のことで
>------------------------------------
>  2行   住所  住所  住所 
>  3行   *大*  *北*  *町*
>  4行
>------------------------------------
と 2〜4行まで条件範囲にいれちゃうと、
 住所が
  {大、北、町 のいずれをも含む}
あるいは(OR)
   {すべてのデータ}
というOR条件で抽出してしまうので、結局「全行抽出」となる。
それは 至極当然のことに思えるのだけれど)

【74144】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/21(日) 12:47 -

引用なし
パスワード
   ▼kanabun さん
  いろいろご丁寧な説明ありがとうございます
 もう一点不明な点がでましたので再度質問させてください

  以下の表で期日を含んだ検索をしました
  入力は以下の検索条件表のようにしました
  その結果
  hij  南京市太平区  345-6789  2012/10/01
  は抽出されましたが
  cdd  湖東市柱町   678-9010  2012/05/03
  は抽出されませんでした
  検索条件表の期日の入力に問題があるのでしょうか
  よろしくお願いいたします

1 氏名  住所      TEL     期日
2 abc  東京都文京区  123-4567  2010/12/04
3 efg  大阪市浪速区  234-5678  2011/02/08
4 hij  南京市太平区  345-6789  2012/10/01
5 xyz  北京市東西区  456-7890  2013/02/13
6 abb  伊東市西町   567-8901  2010/06/25
7 cdd  湖東市柱町   678-9010  2012/05/03
8 nnn  西大路市北町  789-0123  2013/11/09
9 kkk  東京都三宅島  890-1234  2011/03/15

  検索条件表
  氏名  住所  TEL   期日
      *南*      =Year(ADDRESS!H4)=2012
      *湖*      =Left(ADDRESS!H5)="2012"

【74145】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/21(日) 15:16 -

引用なし
パスワード
   ▼masami さん:

>  以下の表で期日を含んだ検索をしました
>  入力は以下の検索条件表のようにしました
>  その結果
>  hij  南京市太平区  345-6789  2012/10/01
>  は抽出されましたが
>  cdd  湖東市柱町   678-9010  2012/05/03
>  は抽出されませんでした
>  検索条件表の期日の入力に問題があるのでしょうか
>
>1 氏名  住所      TEL     期日
>2 abc  東京都文京区  123-4567  2010/12/04
>3 efg  大阪市浪速区  234-5678  2011/02/08
>4 hij  南京市太平区  345-6789  2012/10/01
>5 xyz  北京市東西区  456-7890  2013/02/13
>6 abb  伊東市西町   567-8901  2010/06/25
>7 cdd  湖東市柱町   678-9010  2012/05/03
>8 nnn  西大路市北町  789-0123  2013/11/09
>9 kkk  東京都三宅島  890-1234  2011/03/15
>
>  検索条件表
>  氏名  住所  TEL   期日
>      *南*      =Year(ADDRESS!H4)=2012
>      *湖*      =Left(ADDRESS!H5)="2012"

※masami さんは masui さんでしたか

●抽出しようとしている表の列見出し行は 何行目ですか?
 3行目ですか?それとも 4行目ですか??
●Left(ADDRESS!H5) という書き方はエラーです。
 =YEAR(ADDRESS!H4)=2012 のセル番地が正しいとすると、
LEFTのほうも同じアドレスを指定しないと不合理ですよ。

以上を修正すると、こうなります:
--------------------------------------
  住所         
  *南*     =YEAR(ADDRESS!H4)=2012     
  *湖*     =LEFT(ADDRESS!H4)="2012"        
--------------------------------------
         (↑ この列は数式のため 列見出しは不要です)
と、こうなりますが、
いかんせん、この書き方だと、
--------------------------------------
{ 住所に 「南」を含んでいて、AND 期日列の日付が 2012 である}
か、
{ 住所に 「湖」を含んでいて、AND 期日列の文字列が "2012"で始まっている
--------------------------------------
というOR条件を記述しているだけです。

ほんとは
--------------------------------------
{ 住所に 「南」を含んでいて、かつ期日列の日付が 2012 である}
か、
{ 住所に 「南」を含んでいて、かつ期日列の文字列が "2012"で始まっている}
か、
{ 住所に 「湖」を含んでいて、AND 期日列の日付が 2012 である}
か、
{ 住所に 「湖」を含んでいて、AND 期日列の文字列が "2012"で始まっている}
--------------------------------------
と4つのOR条件を記述したいのではありませんか?
もしそうなら、
そこは
---------------------------------------
  住所    
  *南*     =YEAR(ADDRESS!H4)=2012
  *南*     =LEFT(ADDRESS!H4)="2012"
  *湖*     =YEAR(ADDRESS!H4)=2012
  *湖*     =LEFT(ADDRESS!H4)="2012"
---------------------------------------
と、こうしなくてはいけません。(順番は変えてもかまいません)

【74148】Re:AdvancedFilterでOR条件の入力方法に...
お礼  masami  - 13/4/21(日) 22:16 -

引用なし
パスワード
   kanabun さん

  この条件表で云われてみれば当然でした
  ---------------------------------------
   住所    
   *南*     =YEAR(ADDRESS!H4)=2012
   *南*     =LEFT(ADDRESS!H4)="2012"
   *湖*     =YEAR(ADDRESS!H4)=2012
   *湖*     =LEFT(ADDRESS!H4)="2012"
 ---------------------------------------
 お手間をおかけしました
 これで解決です
 有難うございました

【74149】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/21(日) 22:16 -

引用なし
パスワード
   こういう表があって
   E    F         G      H
3  氏名   住所        TEL     期日
4  abc   東京都文京区   123-4567   2010/12/4
5  efg   大阪市浪速区   234-5678   2011/2/8
6  hij   南京市太平区   345-6789   2012/10/1
7  xyz   北京市東西区   456-7890   2013/2/13
8  abb   伊東市西町    567-8901   2010/6/25
9  cdd   湖東市柱町    678-9010   2012/5/3
10 nnn   西大路市北町   789-0123   2013/11/9
11 kkk   東京都三宅島   890-1234   2011/3/15

先ほどの 抽出条件↓
> ---------------------------------------
>   住所    
>   *南*     =YEAR(ADDRESS!H4)=2012
>   *南*     =LEFT(ADDRESS!H4)="2012"
>   *湖*     =YEAR(ADDRESS!H4)=2012
>   *湖*     =LEFT(ADDRESS!H4)="2012"
> ---------------------------------------
これを
全部「数式で」条件表示すると、範囲が小さくて済みますね。
上記条件は、全部数式で表すと、たとえば、以下のようです。

> ---------------------------------------
[K1:L1] 空白
[K2] =OR(COUNTIF(F4,"*南*")>0,COUNTIF(F4,"*湖*")>0)
[L2] =OR(YEAR(H4)=2012,LEFT(H4,4)="2012")
> ---------------------------------------
このように、抽出条件範囲は[K1:L2] の2行で済みます

【74150】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/22(月) 8:20 -

引用なし
パスワード
   補足です

>> ---------------------------------------
>[K1:L1] 空白
>[K2] =OR(COUNTIF(F4,"*南*")>0,COUNTIF(F4,"*湖*")>0)
>[L2] =OR(YEAR(H4)=2012,LEFT(H4,4)="2012")
>> ---------------------------------------
>このように、抽出条件範囲は[K1:L2] の2行で済みます

1行目が空白ですと .CurrentRegion が使えませんので、
Range("K1").Resize(2,2)
のように Resizeを使って表すか、

または

>> ---------------------------------------
[K1:L1] 条件1   条件2
>[K2] =OR(COUNTIF(F4,"*南*")>0,COUNTIF(F4,"*湖*")>0)
>[L2] =OR(YEAR(H4)=2012,LEFT(H4,4)="2012")
>> ---------------------------------------
のように、表の列見出しにない文字列を入れておけば、

Range("K1").CurrentRegion

が使えます。

【74152】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/22(月) 11:18 -

引用なし
パスワード
   ▼kanabun さん
   1) 住所と期日の組合せの場合
   2) 住所のみの場合 
 などが考えられ どうやって条件表を作成しようか
 処理方法が浮かばなく困っていました
 有難うございました

 [K2] =OR(COUNTIF(F4,"*南*")>0,COUNTIF(F4,"*湖*")>0)
 [L2] =OR(YEAR(H4)=2012,LEFT(H4,4)="2012")

 [L2]ですが
 [L2] =OR(YEAR(ADDRESS!H4)=2012,LEFT(ADDRESS!H4,4)="2012")
 でもよろしいでしょうか
 
  まだ実行していませんが、これから処理をしてみます
  抽出条件↓
>> ---------------------------------------
>>   住所    
>>   *南*     =YEAR(ADDRESS!H4)=2012
>>   *南*     =LEFT(ADDRESS!H4)="2012"
>>   *湖*     =YEAR(ADDRESS!H4)=2012
>>   *湖*     =LEFT(ADDRESS!H4)="2012"
>> ---------------------------------------

【74153】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/22(月) 12:26 -

引用なし
パスワード
   ▼masami さん:

> [L2] =OR(YEAR(H4)=2012,LEFT(H4,4)="2012")
>
> [L2]ですが
> [L2] =OR(YEAR(ADDRESS!H4)=2012,LEFT(ADDRESS!H4,4)="2012")
> でもよろしいでしょうか

どちらでもよい、ということはありません。
> [L2] =OR(YEAR(H4)=2012,LEFT(H4,4)="2012")
の H4 は 自シート、

> [L2] =OR(YEAR(ADDRESS!H4)=2012,LEFT(ADDRESS!H4,4)="2012")
の ADDRESS!H4 は この条件を書いているシートとは 別のシート、つまり
"ADDRESS"シートのH4 のことですよね?

【74154】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/22(月) 13:02 -

引用なし
パスワード
   ▼kanabun さん
  [ADDRESS]は条件表のシートではなく
  [ADDRESS]はデーターが入っているシートです

 [K2]  =OR(COUNTIF(ADDRESS!F4,"*南*">0,COUNTIF(ADDRESS!F4,"*湖*">0)
 [L2]  =OR(YEAR(ADDRESS!H4)=2012,LEFT(ADDRESS!H4,4)="2012")

 シート[ADDRESS]のF列が住所
 シート[ADDRESS]のH列が期日
 です

【74155】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/22(月) 14:38 -

引用なし
パスワード
   ▼masami さん:
>▼kanabun さん

>> "ADDRESS"シートのH4 のことですよね?

>  [ADDRESS]は条件表のシートではなく
>  [ADDRESS]はデーターが入っているシートです

そうですよね、それなら たんに F4 とか H4 とかじゃ、まずいです。
シート名をつけてください ↓

> [K2]  =OR(COUNTIF(ADDRESS!F4,"*南*">0,COUNTIF(ADDRESS!F4,"*湖*">0)
> [L2]  =OR(YEAR(ADDRESS!H4)=2012,LEFT(ADDRESS!H4,4)="2012")
>

【74156】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/22(月) 16:09 -

引用なし
パスワード
   ▼kanabun さん
  度々すいません
  教えて頂いた書式で挑戦しているのですが
  以下のエラーがでます

   Worksheets("条件")------[検索条件]を書くシートです
   Worksheets("ADDRESS")---[データーが入っているシートです

      With Worksheets("条件").Range("F3")
      .ClearContents
      .Offset(0).Formula = "住所"
      .Offset(1).ClearContents
      .Offset(1).Formula = "=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"
   END With

 .Offset(1).Formula = "=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"
 ここで
 [アプリケーション定義またはオブジェクト定義エラー]になります
 書き方が間違っているようです
 どこがダメなのか分からないのです
 よろしくお願いします

【74157】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/22(月) 17:16 -

引用なし
パスワード
   ▼masami さん:

>▼kanabun さん

>  教えて頂いた書式で挑戦しているのですが
>  以下のエラーがでます
>
>   Worksheets("条件")------[検索条件]を書くシートです
>   Worksheets("ADDRESS")---[データーが入っているシートです
>
>   With Worksheets("条件").Range("F3")
>      .ClearContents
>      .Offset(0).Formula = "住所"
>      .Offset(1).ClearContents
>      .Offset(1).Formula = "=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
>                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"
>   End With

> ここで
> [アプリケーション定義またはオブジェクト定義エラー]になります

問題解決のためのヒントです

シート「ADDRESS」で どこか利用していないセルに数式↓
   =COUNTIF(F4,"*南*")
を入力する操作をマクロ記録してみてください。

【74158】Re:AdvancedFilterでOR条件の入力方法に...
発言  UO3  - 13/4/22(月) 17:19 -

引用なし
パスワード
   ▼masami さん:

ヨコから失礼します。

今、セットしようとしている式は

"=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"

ですよね。

この、式の文字列を確認しますと

Sub test()
  MsgBox "=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"
End Sub

=OR(COUNTIF(ADDRESS!F4,*南*)>0,COUNTIF(ADDRESS!F4,*湖*)>0)

こうですよね。

これをセルに入力してみましょう。
どうなりますか? エクセルから、式が正しくないよと叱られますよね。

*南* や *湖* はコンスタント値ですからシート上で式の中に入れる場合は
"*南*" や "*湖*" としますよね。

"=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"

これがセットすべき正しい文字列ですね。

【74159】Re:AdvancedFilterでOR条件の入力方法に...
発言  UO3  - 13/4/22(月) 17:22 -

引用なし
パスワード
   ▼masami さん:



おばかなUO3でした。
使っておられる式をそのまま、コピペして、なおすのをわすれて「正しい文字列」などとかいてしまいました。

すでにkanabunさんからもお答えが出ていますが

正しい文字列は

"=OR(COUNTIF(ADDRESS!F4," & """*南*"")>0," _
                 & "COUNTIF(ADDRESS!F4," & """*湖*"")>0)"

【74160】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/22(月) 17:39 -

引用なし
パスワード
   ▼masami さん:

"*南*" のような すでに "・" があるばあいは それをダブルにした
""・"" とするのが正解です。

あと
>>   With Worksheets("条件").Range("F3")
>>      .ClearContents
>>      .Offset(0).Formula = "住所"
>>      .Offset(1).ClearContents
>>      .Offset(1).Formula = "=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
>>                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"
>>   End With
はそこのところを直しただけではうまくないと思います。

  With Worksheets("条件").Range("F3").CurrentRegion
     .ClearContents
     .Range("A1").Value = "条件1"
     .Range("B1").Value = "条件2"
     .Range("A2").Formula = "=OR(COUNTIF(ADDRESS!F4,""*南*"")>0," _
                & "COUNTIF(ADDRESS!F4,""*湖*"")>0)"
     .Range("B2").Formula = "=OR(YEAR(ADDRESS!H4)=2012," _
                & "LEFT(ADDRESS!H4,4)=""2012"")"
  End With

こんなふうに書かないと。
(もちろん、F2 F3 は空白だと仮定しています)

【74161】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/22(月) 17:41 -

引用なし
パスワード
   失礼

誤 (もちろん、F2 F3 は空白だと仮定しています)

正 (もちろん、F2 G2 は空白だと仮定しています)

でした m(_ _)m

【74165】Re:AdvancedFilterでOR条件の入力方法に...
質問  masami  - 13/4/23(火) 10:22 -

引用なし
パスワード
   ▼kanabun さん
有難うございました
以下の方法で試算しました
Sub 検索Test()
  ThisWorkbook.Activate
  With Worksheets("条件").Range("D2").CurrentRegion
     .ClearContents
     .Offset(0).Value = "住所"
     .Offset(0, 1).Value = "日時"
     .Offset(1).Formula = "=OR(COUNTIF(ADDRESS!F3,""*南*"")>0," _
                & "COUNTIF(ADDRESS!F3,""*湖*"")>0)"
     .Offset(1, 1).Formula = "=OR(YEAR(ADDRESS!H3)=2012," _
                & "LEFT(ADDRESS!H3,4)=""2012"")"
  End With
  Sheets("ADDRESS").Range("D2").CurrentRegion.AdvancedFilter _
  Action:=xlFilterCopy, _
  CriteriaRange:=Worksheets("条件").Range("D3").CurrentRegion, _
  CopytoRange:=Sheets("検索結果").Range("D2"), _
  Unique:=True
End Sub

 Sheet[ADDRESS]
1行  D  E   F       G     H
2行  1 氏名  住所     TEL    期日
3行  2 abc  東京都文京区 123-4567  2010/11/2
4行  3 efg  大阪市浪速区 234-5678  2011/2/12
5行  4 hij  南京市太平区 345-6789  2012/10/23
6行  5 xyz  北京市東西区 456-7890  2011/12/23
7行  6 abb  伊東市西町  567-8901  2013/1/5
8行  7 cdd  湖東市柱町  678-9010  2012/9/20
9行  8 nnn  西大路市北町 789-0123  2010/11/15
10行  9 kkk  東京都三宅島 890-1234  2010/9/23

 Sheet[条件]
   D    E
2  住所      日時
3  FALSE      #VALUE!

 Sheet[検索結果]
D  E    F       G      H
4 hij  南京市太平区  345-6789    2012/10/23
7 cdd  湖東市柱町   678-9010    2012/9/20

いろいろ試した結果それなりの結果はでました
Sheet[条件]で住所    がFALSE
       日時が#VALUE!
ですが 結果は正しく検索されています
Trueのみが検索されると理解していました
この点が気になりまして質問させていただきました
度々で申し訳ありません


>▼masami さん:
>
>"*南*" のような すでに "・" があるばあいは それをダブルにした
>""・"" とするのが正解です。
>
>あと
>>>   With Worksheets("条件").Range("F3")
>>>      .ClearContents
>>>      .Offset(0).Formula = "住所"
>>>      .Offset(1).ClearContents
>>>      .Offset(1).Formula = "=OR(COUNTIF(ADDRESS!F4," & "*南*)>0," _
>>>                 & "COUNTIF(ADDRESS!F4," & "*湖*)>0)"
>>>   End With
>はそこのところを直しただけではうまくないと思います。
>
>  With Worksheets("条件").Range("F3").CurrentRegion
>     .ClearContents
>     .Range("A1").Value = "条件1"
>     .Range("B1").Value = "条件2"
>     .Range("A2").Formula = "=OR(COUNTIF(ADDRESS!F4,""*南*"")>0," _
>                & "COUNTIF(ADDRESS!F4,""*湖*"")>0)"
>     .Range("B2").Formula = "=OR(YEAR(ADDRESS!H4)=2012," _
>                & "LEFT(ADDRESS!H4,4)=""2012"")"
>  End With
>
>こんなふうに書かないと。
>(もちろん、F2 F3 は空白だと仮定しています)

【74166】Re:AdvancedFilterでOR条件の入力方法に...
発言  kanabun  - 13/4/23(火) 10:39 -

引用なし
パスワード
   ▼masami さん:

>     .Offset(1, 1).Formula = "=OR(YEAR(ADDRESS!H3)=2012," _
>                & "LEFT(ADDRESS!H3,4)=""2012"")"

> Sheet[条件]
>   D    E
>2  住所      日時
>3  FALSE      #VALUE!

> Sheet[条件]で住所    がFALSE
>       日時が#VALUE!
>ですが 結果は正しく検索されています
>Trueのみが検索されると理解していました
>この点が気になりまして質問させていただきました

H3 は条件に合わない
だから抽出されない。
------至極当然の結果です。

【74167】Re:AdvancedFilterでOR条件の入力方法に...
お礼  masami  - 13/4/23(火) 11:54 -

引用なし
パスワード
   kanabun さん
  条件表の最初の行(H3)で条件式が合わないため
  FALSE又は#VALUE!が表示されているだけで
  検索は条件式が合っている行(つまりTRUE)になる
  行のみ検索すると云うことですね
  TRUEが表示されないと間違いだと思っていました
  勘違いしていました
  これで多分全て解決しました
  長々とご教示ありがとうございました

1480 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free