• ベストアンサー

エクセル2010 検索と抽出

エクセル2010を 使っています。 以前教えていただいた、数式を改変して応用したいのですが、うまくいきません。 やりたいのは画像の処理で、 B83の値を E列から探しその関連セルであるF列、G列の値を、C列D列に抜き出すという作業です。 改変した数式は以下の様なもので、C83に入力後、オートフィルで使おうと思っていました。 詳しい方、教えていただけませんか? =IFERROR(INDEX(F83:F162,SMALL(IF(E83:E162=B83,ROW(E83:E162)),ROW(A1))),"") (配列数式) 3キー打鍵 よろしくお願い致します。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! お示しの配置の場合はC83セルに =IFERROR(INDEX(F$83:F$162,SMALL(IF($E$83:$E$162=$B$83,ROW(A$1:A$80)),ROW(A1))),"") (配列数式です) という数式を入れ、隣りのD83セルまでコピー! そのまま下へコピーしてみてください。 (1)フィル&コピーしますので、絶対参照、複合参照($マークの位置)に気を付けてください。 (2)INDEX関数の「配列」(83~162行目)までの何行目を表示するか? という数式ですので、83行目がINDEX関数の配列の「1行目」となります。 すなわち仮に83行目に「機器A」がある場合は、数式を入れた1行目にINDEX関数の配列の1行目を表示しなければなりません。 配列数式の >IF($E$83:$E$162=$B$83) (←E83~E162の中でB83と同値の場合=「TRUE」の場合) は、INDEX関数の配列の何行目を返すか?という数式になり >ROW(E83:E162)) の部分を >ROW(A$1:A$80) のように1行目から指定してやる必要があります。(配列の行数とA1からの行数を合わせます) ※ 無理にA列でなくても別列でも大丈夫です。 判り難い場合は =IFERROR(INDEX(F$83:F$162,SMALL(IF($E$83:$E$162=$B$83,ROW(A$83:A$162)-82),ROW(A1))),"") という数式にしても同じ結果が返ります。 ※ この数式の場合は >ROW(A$1:A$80) の部分を >ROW(A$83:A$162)-82 としています。m(_ _)m

gekikaraou
質問者

お礼

回答ありがとうございます。 なるほど、最後の配列の部分が間違っていたのですね、助かりましたありがとうございます。

その他の回答 (2)

noname#204879
noname#204879
回答No.3

別解です。 セル C83 に次の[条件付き書式]を設定  条件1   数式が   =NOT(ISERROR(C83))   パターン色 黄  条件2   数式が   =ISERROR(C83)   フォント色 白 セル C83 に次の配列数式を入力  {=INDEX(F:F,SMALL(IF($E$83:$E$162=$B$83,ROW(E$83:E$162),""),ROW(E1)))} セル C83 を右隣にドラッグ&ペースト 範囲 C83:D83 を下方にズズーッとドラッグ&ペースト

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

=IFERROR(INDEX(F83:F162,SMALL(IF(E83:E162=B83,ROW(E83:E162)),ROW(A1))),"") は =IFERROR(INDEX(F:F,SMALL(IF(E$83:E$162=B$83,ROW($E83:$E162)),ROW(A1))),"") ではないでしょうか。

関連するQ&A