• ベストアンサー

エクセル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

  • エクセルでこんなこと出来ますか?

    こんばんは、エクセル2010を使っています。 一人では、解けない問題が出てきたので、力を貸して頂けませんか? 画像の様なデータ (緑色の部分)があります。 ピンク色の部分に参照データが与えられると、それに関連したデータを、下行に抜き出したいのですが、条件があります、 E1 にマイケル と入力が有った場合まずは、A列から マイケルを探します。 そのマイケルの右列(B列)の値が、F1セルの値のプラスマイナス5以内(この画像では-3~+7)だった場合のみ、B列、C列を、E列、F列に、抜き出したいのです。 マイケルの値と関連セルの値のみなら =IFERROR(INDEX(B$1:B$30464,SMALL(IF(A$1:$A$30464=$E$1,ROW(A$1:A$30464)),ROW(A1))),"") と言う風な感じで抜き出せるのですが、B列の値がF1列のプラスマイナス5 と言う条件がつくと、解りません。 ちなみに、この作業は画像の通り、列方向に8パターン、同じ作業がありますので、改変部分が理解しやすければ嬉しいです。 詳しい方、教えて頂けませんでしょうか。 どうぞ、よろしくお願いします。

  • エクセルマクロ ちょっと難しいです

    セクセル2010を使っています。 画像の様なデータがあります。 F1,G1、H1に入力された名前をA列から探し、その関連セルであるB列を上から順に表示させたいと思います。 現在、F2セルに =IFERROR(INDEX($B$1:$B$50,SMALL(IF($A$1:$A$50=F$1,ROW($A$1:$A$50)),ROW(A1))),"") の様な数式が入っていて、G、Hと下行に、オートフィルで数式をコピーしています。 それで、A列の途中から #VALUE のエラーが出てくる場合があるのですが、その場合は一切抜き出してくれません。 これを、抜き出す方法ってありますか? また、J列からR列、S列からZ列と同じ形式で作業が全部で8つあります。 詳しい方、教えて頂けませんでしょうか、よろしくお願い致します。

  • エクセル 関数式の応用

    こんにちは エクセル2010を使っています。 画像の様なデータがあって、次のような式を教えてもらいました。 =IFERROR(INDEX($B$1:$B$7,SMALL(IF($A$1:$A$7=C$1,ROW($A$1:$A$7)),ROW(A1))),"") 画像では A列 B列の データが7行目までなのですが、これを3万行まで広げようと次のような式に変更してみましたが上手く行きません。(空白が返される) =IFERROR(INDEX($B$1:$B$30000,SMALL(IF($A$1:$A$30000=C$1,ROW($A$1:$A$30000)),ROW(A1))),"") 詳しい方、教えていただけませんか? よろしくお願いします。

  • エクセルについての質問です。こんなことはできるのでしょうか?

    エクセルについての質問です。こんなことはできるのでしょうか? まず「データ」という名前のシートのA列に動詞,名詞など品詞が入っています。B列に高1,高2など学年が入っています。C列に数字(2や3など)が入っています。D列に英単語が入っています。E列に日本語訳が入っています。F列は作業列でF2のセルに=IF(AND(A2=問題作成!$A$2,B2=問題作成!$B$2,AND(C2>=問題作成!$C$2,C2<=問題作成!$D$2)),ROW(A1),"")が入っており,以下のセルに数式がコピーされています。 次に「問題作成」というシートのA5セルに=IF(COUNT(データ!$F$2:$F$2294)<ROW(A1),"",INDEX(データ!D$2:D$2294,SMALL(データ!$F$2:$F$2294,ROW(A1))))が入っており,以下のセルに数式がコピーされています。B5セルには=IF(COUNT(データ!$F$2:$F$2294)<ROW(B1),"",INDEX(データ!E$2:E$2294,SMALL(データ!$F$2:$F$2294,ROW(B1))))が入っており,以下のセルに数式がコピーされています。 「問題作成」のシートのA2セルは動詞や名詞など品詞が選択できるようになっています。B2セルは学年が選択できるようになっています。 この後,C2セルにWordでページを指定して印刷するときのように,2-3,6,8のように入力すると,「データ」のシートからそのページに該当する単語のみを「問題作成」のA5,B5以下に引っ張ってくるようなことはできますでしょうか? また,入っている数式に問題があれば,お教え願いたいのですが。 よろしくお願いいたします。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • googleドキュメントで配列数式を使う場合に

    http://support.google.com/docs/bin/answer.py?hl=ja&answer=71291 こちらのページで説明がされているのですが、CTRL+SHIFT+ENTERで行う配列数式はgoogleドキュメントではARRAYFORMULAを使い、計算するようなのですが IF(COUNTIF(Sheet2!$A$2:$A$444,$E$59)<ROW(Sheet2!B1),"",INDEX(Sheet2!B$2:B$444,SMALL(IF(Sheet2!$A$2:$A$444=$E$59,ROW(Sheet2!$A$1:$A$443)),ROW(Sheet2!B1)))) というちょっと長い数式になると、どこに入れたらいいか分からなくなりました Sheet1に↑の数式が入れてあり、検索したい値はE59セルに Sheet2には取り出したいデータ A列にデータ(検索用)、B列にデータ1、C列にデータ2とあり、 この数式はA列にあてはまるB列のデータ1全てを取り出すものとなっています。

  • エクセルのVLOOKUP関数の検索値が数式の場合について

    エクセルのVLOOKUP関数に悩んでいます。 どなたかご指導お願いいたします。 *--------------------------* A~F列 すべて書式が時刻です。 A、B列には数式で計算された時刻が入力されており、 C列はA列+B列という計算式がはいっています。 F列に=VLOOKUP(C列、D:E列、2、FALSE)というように C列を検索値とし、D列を参照し、E列にある時刻をF列に 設定したいのですが、結果が#N/Aになります。 例えばA,B列が数式ではなく入力した値であれば 検索値であるC列がA列+B列 でも結果はOKでした。 検索値は数式セル同士を足し算した数式は設定不可能なのでしょうか?

  • エクセルでお聞きします。

    こちらのサイトの回答を参考に、セルに下記のような式が入れました。 他のシートや他のセルにも同様の式が入っているのですが割愛致しました。 通常Sheet1のB列は空白なんですが、もし何か文字が入っていたら その行に関してはこの式を反映させない方法を教えて下さい。 (Sheet2) B列 =IF(ROW(E1)>COUNT('Sheet1'!$E$4:$E$505),"",INDEX('Sheet1'!E$1:E$505, SMALL(INDEX(SUBSTITUTE(('Sheet1'!$E$4:$E$505<>"")*1,0,10^5)*ROW('Sheet1' !$E$4:$E$505),),ROW(E1)))) D列 =IF(ROW(C1)>COUNT('Sheet1'!$E$4:$E$506),"",INDEX('Sheet1'!C$1:C$505, SMALL(INDEX(SUBSTITUTE(('Sheet1'!$E$4:$E$505<>"")*1,0,10^5)*ROW('Sheet1' !$E$4:$E$505),),ROW(C1))))

  • エクセルで時間を起点として集計

    A列に開始時間、B列は~という文字 C列は終了時間、D列は種類名、E列は値(経過時間)が記載されています 1行目はタイトルで、2行目から始まっています。 A B C D E 07:00 ~ 07:12 バナナ 12 07:20 ~ 07:40 りんご 20 09:00 ~ 09:12 りんご 12 09:20 ~ 09:22 ぶどう 2 09:30 ~ 09:42 メロン 12 13:00 ~ 14:12 すいか 72 このDセルの種類名のカウントと、Dセルに対してEセル経過時間の値の合計値を計算する関数というと物を以前教えて頂きました。 下記の物を使わせて頂いております。 >Sheet1のデータをSheet2に表示するようにしてみました。 >↓の画像で左がSheet1・右側がSheet2とします。 >Sheet1に作業用の列を1列設けます(今回はF列にしています) >F2セルに >=IF(COUNTIF(D$2:D2,D2)=1,ROW(),"") >という数式を入れ、これ以上データはない!というくらいまでしっかり下へオートフィルでコピーしておきます。 >Sheet2のA2セルに >=IF(COUNT(Sheet1!F:F)<ROW(A1),"",INDEX(Sheet1!D:D,SMALL(Sheet1!F:F,ROW(A1)))) >B2セルに >=IF(A2="","",COUNTIF(Sheet1!D:D,A2)) >C2セルに >=IF(A2="","",SUMIF(Sheet1!D:D,A2,Sheet1!E:E)) >という数式を入れA2~C2セルを範囲指定 → C2セルのフィルハンドルで下へオートフィルでコピー! 回答者様のお知恵を借り、とても楽に計算する事ができ、感謝しております。 贅沢な者で、もう少し楽をしたいと欲を出してしまいまして・・・。 この集計で朝の7時~19時までと夜19時~7時までで分けて集計する事は可能でしょうか? 基本的には19時で一度〆るので、19時前と19時後を跨ぐ事はないのですが(18:50 ~ 19:10)←こんな感じには基本ならないのです。 たまに作業が停止する時は(14:00 ~ 6:59)という形で、跨いでしまう事があります。 この場合は19時を跨いだ時点で一度朝の時点での経過時間の計算をし、再度19:00~夜の経過時間を再計上という形をしたいのですが可能でしょうか? 長々となりましたが、お知恵をお貸し下さい。

  • エクセル関数について

    A列とB列に氏名を入れてA列にあってB列にないものを取り出す為に=IFERROR(INDEX($A$2:$A$8,SMALL(IF(ISNA(MATCH($A$2:$A$8,$B$2:$B$8,0)),ROW($A$2:$A$8)-1),ROW()-1),1),"")の関数をⅮ列に入れ下にオオートフィルしたのですが、思うように表示されません。  関数が間違っているのか判りません。 何か良い方法はあれば教えてください。

お庭の見事な花の名前は?
このQ&Aのポイント
  • ご近所のお庭に咲く見事な花の名前を教えてください。
  • この花はダリアに似ていて幹が太く、木に咲く花です。
  • 秋に咲くとされているダリアとは異なり、この花は現在咲いています。
回答を見る

専門家に質問してみよう