データを扱う時のいろいろな操作 2

■ Excel豆知識43





43-2 フィルタオプション(文字列の検索・計算検索条件)
今度は下記のMicrosoftのサポートの記事と、Excelのヘルプの記事を参考に説明したいと思い
ます。

・[XL2002]複雑な検索条件を使用してリストデータを抽出する方法(Microsoftサポート記事)
・「詳細な検索条件を指定してリストのデータを抽出する 」(Excelのヘルプ記事)

なお、今回の抽出もすべて、下記の設定で行っています。
「リスト範囲」が「データ」シートに、「検索条件範囲」が「抽出条件」シートに、「抽出先」が「抽出」シートに
見やすくするために項目のセルは塗りつぶしの色を水色にしてあります。
また、文字列の検索の説明のためにデータ数件の担当者名を変更しました。


1.文字列の検索
検索条件として文字列を入力すると、その文字列で始まるデータがすべて検索されます。
検索条件として文字列を入力すると、その文字列で始まるデータがすべて検索されます。
[図04318]
条件として「小」と入力すると、下図のように「小」だけでなく「小倉」「小酒井」のように
「小」で始まるデータが検索されます。
条件として「小」と入力すると「小」で始まるデータが検索されます。
[図04319]



指定した文字列に完全に一致するデータだけを検索するには、「="=文字列"」という数式を
入力します。
下図の抽出条件のA2セルには、数式バーに表示されているように「="=小"」という数式が入
っています。
「="=小"」
[図04320]
そして抽出を行うと、下図のように「小」に一致するもののみが抽出されます。
「小」に一致するもののみが抽出されます。
[図04321]



<ワイルドカード文字>
一部が一致する文字列を検索する場合に、ワイルドカード文字を使います。

「?」疑問符:任意の1文字
下図の抽出条件のA2セルには、数式バーに表示されているように「="=小?"」という数式が
入っています。
「?」を使って
[図04322]
そして抽出を行うと、下図のように「小」の後ろに1文字ある「小倉」が抽出されます。
「小」の後ろに1文字ある「小倉」が抽出されます。
[図04323]



「*」アスタリスク:任意の数の文字
下図の抽出条件のA2セルには、数式バーに表示されているように「="=*小"」という数式が入
っています。
「="=*小"」
[図04324]
そして抽出を行うと、下図のように「小」の前に任意の数の文字(ゼロ個も含む)のある「小」
と「大小」が抽出されます。
この時「小」の後ろに文字のあるものは抽出されません。
「小」の前に任意の数の文字(ゼロ個も含む)のあるものが抽出される
[図04325]


下図の抽出条件のA2セルには、数式バーに表示されているように「="=*小*"」という数式が入っ
ています。
「="=*小*"」
[図04326]
そして抽出を行うと、下図のように「小」の左右に任意の文字のあるもの、つまり「小」を含む
ものが抽出されます。
「小」を含むものが抽出
[図04327]



「~」チルダ:疑問符、アスタリスク、チルダの前につけて「?」「*」「~」そのものを検索
(この場合、全角と半角は区別されますので気をつけてください。)
なお「~」はキーボードによって違うこともあると思いますが、英数入力で、Shiftキーを押しながら「へ」の
キーを押すと出ます。

下図のようなデータから「?」がついているものを抽出したい場合。
「?」がついているものを抽出したい
[図04328]
下図の抽出条件のA2セルには、数式バーに表示されているように「="=*~?*"」という数式が入
っています。
「="=*~?*"」
[図04329]
そして抽出を行うと、下図のように「?」を含むものが抽出されます。
image04330.png
[図04330]



2.計算検索条件
条件として使用する数式はワークシートの数式を用い、計算結果がTRUEまたはFALSEになるよう
にします。
数式に列見出しを使用して評価の対象となる列を指定することができます。この場合、検索条
件を入力したセルに"#NAME?"、"#VALUE!"などのエラー値が表示されますが、抽出結果には影響
しません。
データが評価される時、大文字と小文字は区別されません。

いくつか例を挙げてみます。

(1)=NOT(ISERROR(SEARCH("え*",C2))) または =NOT(ISERROR(SEARCH("え*",データ!C2)))
ヘルプから
と、ヘルプにもありますので、上記のどちらの式でも同じ抽出が出来ました。
「抽出条件」シートの抽出条件
[図04332]
抽出を行うとC列が「え」から始まるデータが抽出されます。
「抽出」シートの抽出結果
[図04333]



(2)=OR(担当者= "秋野",担当者= "小倉",担当者= "久留米")
「抽出条件」シートの抽出条件
[図04334]
抽出を行うと「担当者」が「秋野」または「小倉」または「久留米」のデータが抽出されます。
「抽出」シートの抽出結果
[図04335]
これは前にやった下図の抽出条件と同じことになります。
豆知識43-1の図04304「同じ列に複数の抽出条件を指定」するのと同じ
[図04304]



(3)=OR(AND(担当者="秋野",金額>=5000),AND(担当者="小倉",金額>=10000))
「抽出条件」シートの抽出条件
[図04336]
下図のように「担当者」が「秋野」で「金額」が「5000円以上」、または「担当者」が「小倉」
で「金額」が「1万円以上」のいずれかに該当するデータが抽出されます。
「抽出」シートの抽出結果
[図04337]
これは前にやった下図の抽出条件と同じことになります。
豆知識43-1の図04310「複数の列に2セット以上の抽出条件を指定」するのと同じ
[図04310]



(4)=MONTH(A2)=10 または =MONTH(データ!A2)=10

今度はA列の月が10のデータだけを抽出してみます。
この時、条件の数式を入力するセルが「抽出条件」シートのA2セルなので、「=MONTH(A2)=10」
と入力すると「循環参照」になりエラー表示されると思います。
「ツール」-「オプション」-「計算方法」の「反復計算」にチェックを入れればエラーが解消
され、抽出条件として使えます。
「=MONTH(A2)=10」
[図04338]
でも、こういう場合は下図のように「データ!A2」とA2セルのシートを指定してしまったほうが
良いのだろうと思います。
「=MONTH(データ!A2)=10」
[図04339]
抽出を行うと、下図のように10月のデータだけが抽出されます。
「抽出」シートの抽出結果
[図04340]



(5)=RANK(G2,データ!$G$2:$G$117)<=10 または =RANK(データ!G2,データ!$G$2:$G$117)<=10

「データ」シートのG列の金額のランクが1〜10のものを表示させたいと思います。この時、RANK
関数の引数の「範囲」は「絶対参照」で指定する必要があります。

「G2」は相対参照で「G3」「G4」・・・となっていき、それに対し範囲は「データ!$G$2:$G$117」
と固定するわけです。
「抽出条件」シートの抽出条件
[図04341]
抽出を行うと、金額が大きいもの10件のデータが抽出されます。
「抽出」シートの抽出結果
[図04342]



このように、数式を条件として利用すると、いろいろ工夫が出来ると思います。

でも、フィルタオプションの設定を毎回行うのはちょっと面倒です。
なので、次は「抽出」シートにボタンを配置して、そこにフィルタオプションのマクロを登録
してみようと思います。
ページTOPへ