- ベストアンサー
excel match関数について
早速質問いたします。 excelにおいてmatch関数を使用して検索対象の行数を検索し、 該当した件数分該当セルの内容を表示したいと考えているのですが、 検索対象がない場合、もしくは該当件数以上に検索をした場合に、エラー値「#N/A」が返ります。 当たり前なのですが、 該当件数分だけ、検索内容を表示したいのでなにか上手に表示できる知恵を貸してください。 例) りんご 200円 ばなな 150円 めろん 250円 りんご 180円 すいか 280円 いちご 170円 めろん 200円 ばなな 140円 りんご 110円 すいか 220円 りんご 230円 ばなな 180円 というデータがあった場合に、 りんご 200円 りんご 180円 りんご 110円 りんご 230円 と他のセルに表示したいと考えております。 どうかよきアドバイスを下さいませ。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ISNA関数というものがあります。 式の結果が#N/AだとTRUEを返します。 =if(isna(現在の式), "", 現在の式) としてみてはいかがでしょうか? これだと、#N/Aの時は何も表示されません。 ちょっと冗長なので、もっと良い方法があるかもしれませんが。
その他の回答 (1)
- shiotan99
- ベストアンサー率68% (140/203)
こんにちは~ こういう質問をされるときは、元データがどの列の何行目から入っているのかとか、抽出はどのセルにしたいのかを明記されたほうがいいですよ。 要は、関数を使って必要なデータだけを抽出すればいいわけですよね。 MATCH 関数でなくてもよければ、次の方法を試してみてください。 <前 提> ・元のデータが A1:B12 に入っている。 ・検索語( たとえば「りんご」)を F1セルに入れると、F3以下に結果を表示する。 F1セルに りんご と入力してください。 ■作業列を使う方法( 仮に C列とします ) C1に =IF(AND(LEN($F$1),A1=$F$1),ROW(),"") と入れ、C12までフィルコピー F3に =IF(COUNT($C:$C)<ROW(A1),"",INDEX(A:A,SMALL($C:$C,ROW(A1)))) と入れ、G3にフィルコピー F3 と G3 の数式を必要なだけ下にフィルコピー ※作業列はどの列でもかまいません。 ※作業列が目障りなら非表示にしてください。 ■作業列を使わない方法( 配列数式 ) F3に =IF(COUNTIF($A$1:$A$12,$F$1)<ROW(A1),"",INDEX(A$1:A$12,SMALL(IF($A$1:$A$12=$F$1,ROW($A$1:$A$12),""),ROW(A1)))) と入れて、配列数式ですので、Ctrl+Shiftキーを押しながら Enterで確定してください。 数式が{ } で囲まれたらOKです。 囲まれていなければ NGですので、F3セルを選択して、F2キーを押してからもう一度Ctrl+Shiftキーを押しながら Enterで確定してください 確定後、G3にフィルコピー F3 と G3 の数式を必要なだけ下にフィルコピー ※データが多い場合、配列数式では重くなりますので作業列を使う方法をお勧めします。 * ★ F1に「りんご」以外の品名を入力して正しく抽出されるか確認してください。
お礼
ご返答ありがとうございました。 >こういう質問をされるときは、元データがどの列の何行目から入っているのかとか、抽出はどのセルにしたいのかを明記されたほうがいいですよ。 まことに申し訳ありません。 急いでいたもので、初歩的なことを記入忘れていました。m(T-T)m 問題が無事解決いたしました。 どうもありがとうございました。
お礼
excelのペルプで見つからなかった(見つけられなかった?)のでISNA関数の存在を知りませんでした。 無事問題が解決いたしました。 ありがとうございました。