• ベストアンサー

フィルタオプションで異なる文字列の抽出の仕方を教えて下さい。

次の様なセルがあるとします。 +--------------+----------+-------+ |リングネーム |所属ジム |試合数 | +--------------+----------+-------+ |ガッツ石田  |船橋東  |12   | +--------------+----------+-------+ |風呂敷勝男  |ヨネヤマ |15   | +--------------+----------+-------+ |西島白鳥山  |ヨネヤマ | 8   | +--------------+----------+-------+ |ドロンズ誠  |帝拳荒川 |31   | +--------------+----------+-------+ この表から 1) リングネームに「田」の文字が付かない選手 のなかから、 2) 試合数がの多い上位3位の選手 を抽出しようしています。 方法としては、同一シート内に検索条件を作成して、 メニュー「データ」->「フィルタ」->「フィルタオ プションの設定から、先ほどの検索結果を”一度” に実行したいと思っています。 この最、1つめの検索条件 「リングネームに「田」の文字が付かない選手」 の条件の指定の仕方がわかりません。 このやり方を教えて下さい。 オートフィルタのオプションから実行すれば同じ 結果を抽出できると思いますが、この方法だと検 索を2回しないといけないと思います。 1回の操作で検索できればよいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#187541
noname#187541
回答No.6

済みません。前回の数式ではすべての中からのトップ3になっていました。 で、この中から田の付く人が抜かれたので2人しか抽出されなかったようです。 色々考えてみましたが、旨く数式をひとつには出来ませんでした、その代わりリングネームの条件を必要としない数式にしました。 つまり、試合数のトップ3を出すときにリングネームに田の付く人を除いた範囲にするというものです。 以下のような検索条件にしてください。   A 1 試合数 2 {=LARGE(IF(ISERROR(FIND("田",$A$2:$A$5)),$C$2:$C$5,""),1)} 3 {=LARGE(IF(ISERROR(FIND("田",$A$2:$A$5)),$C$2:$C$5,""),2)} 4 {=LARGE(IF(ISERROR(FIND("田",$A$2:$A$5)),$C$2:$C$5,""),3)} 数式には{}が付いていますが、これは入力するのではなくて配列数式という意味です。 確定するときに Shift+Ctrl+Enterキーで確定します。 どうでしょうか。

zucchine
質問者

お礼

ありがとうございました。出来ました。 これから式の意味を考えていきます。

その他の回答 (5)

noname#187541
noname#187541
回答No.5

試合数の検索条件に項目名を付けていませんか。 検索条件に数式を使う時は、項目名は入力せず空白にし、その空白の行も範囲に含めます。 旨くいかないとは、どのように旨くいかないのでしょうか。 エラーが出るのか、抽出結果が違うのか。 また、数式のセル範囲は実際の表のセル範囲に直してくださいね。 C2は試合数の列の先頭、LARGE関数の引数は項目名のセル範囲です。(項目名は除く)

zucchine
質問者

お礼

回答ありがとうございました。 意味が伝わるかわかりませんが、補足説明を記述しました。

zucchine
質問者

補足

追加補足ありがとうございます。 下の様なシートについてます(A1から始まる。) 検索条件の部分は、 =AND(C2<=LARGE($C$2:$C$5,1),C2>=LARGE($C$2:$C$5,3)) と指定しました。下の表では「TRAE」と表示されて いる部分です。 +--------------+----------+-------+ |リングネーム |所属ジム |試合数 | +--------------+----------+-------+ |ガッツ石田  |船橋東  |12   | +--------------+----------+-------+ |風呂敷勝男  |ヨネヤマ |15   | +--------------+----------+-------+ |西島白鳥山  |ヨネヤマ | 8   | +--------------+----------+-------+ |ドロンズ誠  |帝拳荒川 |31   | +--------------+----------+-------+ <空白行> +--------------+----------+-------+ |リングネーム |所属ジム |    | +--------------+----------+-------+ |<>*田*    |     |TRUE  | +--------------+----------+-------+ <空白行> +--------------+----------+-------+ |リングネーム |所属ジム |試合数 | +--------------+----------+-------+ |風呂敷勝男  |ヨネヤマ |15   | +--------------+----------+-------+ |ドロンズ誠  |帝拳荒川 |31   | +--------------+----------+-------+ この時、A1にカーソルをおいて、 データ -> フィルタ -> フィルタオプションの設定 を選び リスト範囲を$A$1:$C$5 検索条件範囲を$A$7:$C$8 抽出範囲を$A$10:$C$15 にして、「OK」をやった結果です。 検索結果は、3名表示されるところを、2名までしか 表示されません。

noname#187541
noname#187541
回答No.4

No2です。試合数の検索条件はこれではおかしいですね。田の付かない選手が3人なので勘違いしてしまいました。 試合数の検索条件はこの様にしてください。 提示の表がA1から始まっているとします。 検索条件を以下のようにしてください。 =AND(C2<=LARGE($C$2:$C$5,1),C2>=LARGE($C$2:$C$5,3))

zucchine
質問者

お礼

ありがとうございます。 やって見ましたが、何故か旨くいかないです。。 きっと私のやり方がおかしいのですね、少し調べてやってみます。

noname#187541
noname#187541
回答No.3

こんばんは。 検索条件はこんな感じでどうでしょうか。   A        B 1 リングネーム 2 <>*田*     =LARGE(試合数,1) 3           =LARGE(試合数,2) 4           =LARGE(試合数,3) 数式を入力すると #NAME? とエラーになりますが気にしないでフィルタオプションの設定を行ってください。 数式はもう少しいいのがあるでしょうね。ひとつにするとか。

zucchine
質問者

お礼

ありがとうござます。 「<>*田*」を指定することで、「田の付かない選手」を検索する事ができました。 しかし、トップ3位が上手くいかないですね。もう少し調べてみます。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.2

それはフィルタオプションでもオートフィルタでも簡単には無理でしょう。 ・そもそも、フィルタオプションでトップ3の指定とかできたんでしたっけ? ・オートフィルタでやるにしても・・・ ・田の字を含まない選手は *田 で始まらない とか指定すればいいですが、 ・トップテン機能は、田を含む選手を含めた上位10名とかを抽出します。 なのでデータ自体を触らないで、一発で出す方法はないと思います。 で、アドバイス。 上の例ならD2列に  =if(iserror(find("田",a2)),rank(c2,c$2:c$5,1),0) と入れて、下までコピー。D列で上位3つをオートフィルタで出せばいいと思うのですががいかが?

zucchine
質問者

お礼

回答ありがとうございました。

  • haukappu
  • ベストアンサー率15% (46/296)
回答No.1

ヘルプでフィルタオプションを見ると”ワイルドカード文字”の説明があるかと。 ? (疑問符) 任意の 1 文字 たとえば、「インターフェ?ス」と入力すると "インターフェイス" や "インターフェース" が検索されます。 * (アスタリスク) 任意の数の文字 たとえば、「Win*」と入力すると "Win98" や "Win2000" が検索されます。 ~ (チルダ) (?、*、または ~ の前に入力) 疑問符、アスタリスク、またはチルダ たとえば、「fy91~?」と入力すると "fy91?" が検索されます。 田の前後を*(アスタリスク)で囲ってどうですか? (*田*)

zucchine
質問者

お礼

ありがとうございます。 問題は解決していませんが、ちょっと無理そうですね。 ちなみに、「田」の付かない選手を検索したかったので、「*田*」では、「田」の付く選手を検索するので、ちょっとちがいますね。

関連するQ&A

専門家に質問してみよう