• 締切済み

エクセル 検索と抜き出し

エクセル2010を使っています。 画像の様なデータがあり、機器Aの点数を上から順に抜き出したいと思います。 VLOOKUPの様に簡単な方法が理想なのですが、どのような関数がありますか? 詳しい方よろしくお願いいたします。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.7

>ただ、BT列の文字列と検索の対象の文字が違うようで、正常な数値を返してくれません>< ?、何を言っているのか判読できません。 BT列には機器名を正しく入力されていますよね? CB1と同じ文字列の機器名とBT列の文字列が一致する行番号を若い順に拾い出す処理なのでBT列の文字列に誤りがあれば拾えないでしょう。 例えばBT9の値が"機器A "や"機器 A"のようになっていると対応するBV9の96は拾い出せません。 但し、半角英文字の大文字と小文字は同じ扱いになりますので"機器A"と"機器a"は同じと見做されます。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.3です。 補足に書かれている数式でもちゃんと表示されると思いますが、 IFERROR関数を使用しているために、エラーと判断され空白になっているものと思われます。 ちゃんと配列数式になっているでしょうか? 今一度確認してみてください。 尚、CA1セルが空白の場合は「0」が表示されてしまうと思いますので、 IFERROR関数を使わずに同じような数式にしてみました。 表示したいセルに =IF(COUNTIF(BT:BT,CA$1)<ROW(A1),"",INDEX(BV$1:BV$1000,SMALL(IF(BT$1:BT$1000=CA$1,ROW(BT$1:BT$1000)),ROW(A1)))) としてフィルハンドルで下へコピーしてみてください。 今回も配列数式です。 (数式の最後の「A1」部分はA列でなくても構いません「BT1」のように1行目であればどの列でもOKです) 上記数式をドラッグ&コピー → 表示したいセルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定してみてください。 ※ 補足の数式を拝見するとデータ範囲が10000行になっていますが、 実際にその程度のデータ量になるのでしょうか? その場合、配列数式はPCに極端に負担をかけ計算速度が遅くなります。 3000行程度であれば問題ないと思いますが、10000行程度のデータ量がある場合は 作業用の列を設ける方法か、VBAをオススメします。m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

>実際は 検索したい値はCA1にあり、検索したい範囲は、BT列、取り出したい数値はBV列にありますので以下の様に改変してCtrl+SHIFT+ENTERで確定してみたのですが、空白が返されてしまいます。 修正後の数式に誤りがあるようです。 =IFERROR(INDEX($BT$1:$BU$1000,SMALL(($BT$1:$BT$1000=CA$1)*ROW(BT$1:BT$1000)+$BT$1:$BT$1000<>CA$1)*10000,ROW()),2),"") INDEX関数の第1引数(配列)の範囲にBV列を含めないと抽出対象がありません。 また、第3引数(列番号)が違います。 更に、SMALL関数の括弧内の数式で ( が1個欠落しています。 前回の回答で提示しましたINDEX関数の第1引数($A$1:$B$1000)は隣接していたのでA列とB列を対象にしましたが抽出目的のB列のみでも問題ありませんでした。 但し、B列のみを対象にしたときは第3引数を1に変更することになります。 以上の要件を考慮して数式を以下のように変更してください。 =IFERROR(INDEX($BV$1:$BV$1000,SMALL(($BT$1:$BT$1000=CA$1)*ROW(BT$1:BT$1000)+($BT$1:$BT$1000<>CA$1)*10000,ROW()),1),"")

gekikaraou
質問者

補足

再度の回答いただきありがとうございます。 試してみた所、ダミーデータでは正常に動いています。 ただ、BT列の文字列と検索の対象の文字が違うようで、正常な数値を返してくれません>< 見た目は同じなんですが、、、 お心当たりないでしょうか?><

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>VLOOKUPの様に簡単な方法が理想なのですが、どのような関数がありますか? VLOOKUP関数は検索範囲に複数の検索値が存在する場合は使えません。 配列と検索値の配列演算を行った結果を利用して行番号に置き換えてSMALL関数またはLARGE関数で順番に抽出すると良いでしょう。 行番号の若い順に抽出するときは配列演算を (配列範囲=検索値)*ROW(配列範囲)+(配列範囲<>検索値)*最大値 のようにします。 配列演算の結果をSMALL関数で行番号の若い順に選択してINDEX関数で目的の値を取り出します。 貼付画像はExcel 2013で検証した結果ですがExcel 2010でも同じ結果を得られます。 E1=IFERROR(INDEX($A$1:$B$1000,SMALL(($A$1:$A$1000=D$1)*ROW(A$1:A$1000)+($A$1:$A$1000<>D$1)*10000,ROW()),2),"") 数式の入力後、Ctrl+Shift+Enterの打鍵で確定してください。 尚、処理対象は1行目から1000行目までとなっていますが範囲は実情に合わせて変更してください。 E1セルを下へ必要数コピーします。 F、H、J、L、N列に検索値を入力すればG、I、K、M、O列はE列をコピーすることで目的の処理ができます。

gekikaraou
質問者

補足

回答ありがとうございます。 やってみました、実際は 検索したい値はCA1にあり、検索したい範囲は、BT列、取り出したい数値はBV列にありますので以下の様に改変してCtrl+SHIFT+ENTERで確定してみたのですが、空白が返されてしまいます。 入力した数式 =IFERROR(INDEX($BT$1:$BU$1000,SMALL(($BT$1:$BT$1000=CA$1)*ROW(BT$1:BT$1000)+$BT$1:$BT$1000<>CA$1)*10000,ROW()),2),"") もしかしたら、CA列が他セルを参照しているためでしょうか? もしそうであれば対応策を教えて頂けないでしょうか? ちなみにCAセルの参照元は頻繁に更新されますので、現実的な方法がベターなのですが。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 画像通りの配置だとして、 E1セルに =IFERROR(INDEX(B$1:B$1000,SMALL(IF(A$1:A$21000=D$1,ROW(A$1:A$1000)),ROW(A1))),"") G1セルに =IFERROR(INDEX(B$1:B$1000,SMALL(IF(A$1:A$1000=F$1,ROW(A$1:A$1000)),ROW(A1))),"") どちらも配列数式ですので、Ctrl+Shift+Enterで確定! これをフィルハンドルで下へコピーしてみてください。m(_ _)m

gekikaraou
質問者

補足

回答ありがとうございます。 やってみました、実際は 検索したい値はCA1にあり、検索したい範囲は、BT列、取り出したい数値はBV列にありますので以下の様に改変してCtrl+SHIFT+ENTERで確定してみたのですが、空白が返されてしまいます。 入力した数式 =IFERROR(INDEX(BV$1:BV$10000,SMALL(IF(BT$1:BT$21000=CA$1,ROW(BT$1:BT$10000)),ROW(BT1))),"") もしかしたら、CA列が他セルを参照しているためでしょうか? もしそうであれば対応策を教えて頂けないでしょうか? ちなみにCAセルの参照元は頻繁に更新されますので、現実的な方法がベターなのですが。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.2

作業列の作成とMATCH関数とINDEX関数の組み合わせで何とかなりそうですが、面倒ですよ。 作業列にCOUNTIF関数で対象のセルがいくつあるのかを数える 以下、I,J列を作業列とした場合  I1=COUNTIF(A$1:A1,D$1)  J1=COUNTIF(A$1:A1,F$1) を必要行数 下へコピーする で、  E1=INDEX(B:B,MATCH(ROW(),I:I,0))  G1=INDEX(B:B,MATCH(ROW(),J:J,0)) を必要行数 下へコピーする。 簡単ではありませんが、後から編集を行う場合、 配列数式を使わないやり方のほうが挙動の理解はしやすいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

配列数式を使う方法でE1に =LARGE(($A$1:$A$13=$D$1)*$B$1:$B$13,ROW()) と入力してCtrlキーとShiftキーを押しながらEnterで確定 この数式をE2,E3にコピーしてください。

gekikaraou
質問者

補足

回答ありがとうございます。 やってみましたが、私の説明が悪かったですね。 大きい順ではなく 上から順に抜き出すと言う意味です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル 検索と抜き出し

    エクセル2010を使っています。 関数に詳しくないので、教えて頂けませんか? 画像の様なデータシートがあります。 2行目から40行目まで、画像の様に数字が入っていて、D1に入力された数字【画像では1】をA列から全て検索し、その右のB列の数値をD2から以下に抜き出したいと思います。 黄色で塗りつぶした部分です、(例として数値を表示させています) また同じ形で、E~H列、I~L列と言う風にAF列まであります。 詳しい方、教えて頂けませんか? よろしくお願い致します。

  • エクセル 検索と表示

    エクセル2010を使っています 画像の様なデータがあり、C1~L1に文字が入力された時に、A列から同じ文字を検索し、B列の文字を【上から順に】表示させたいと思います。 出来れば簡単な関数でお願いします。 詳しいかたよろしくお願いいたします。

  • エクセル2002で同じ文字を検索し、関連セルのデー

    こんばんは、エクセルにまだまだ詳しくないので教えていただけませんか? エクセル2002を使っています。 画像の様なシートがあります。 それで、、P14に機器Aと入力した時に、AS列にある機器Aのデータの下から5つを抜き出したいと思います。 これは機器Bとか機器Cとか毎回異なります。 例として、機器Aと入力した時は、P41に機器AのAVセルにあるデータ29をQ41にはAWセルにあるデータA29を。 上のP40にはデータ28、Q40にはデータA28をと言う風に読み出してくれればOKです。 もし機器Aのデータが4つしかなければP及びQセルの一番上は空白で結構です。 これをマクロではなく 関数で実現するにはどうしたらよいでしょうか? 詳しい方、よろしくお願いいたします・

  • Excelで範囲検索

    今EXCELにこのような表があります。 名前 点数 日付け   A  20  200702  B  10  200701  C  30  200612   :  :  : セルA1に200001 セルA2に200712 と値を入れると日付けがその間(200001~200712)にある行だけを表示するようにしたいです。 VLOOKUP関数だと日付けが一つしか取れないですし、列も1つしか表示させることができません。

  • エクセルのデーター検索、抜き出し。

     初めまして、よろしくお願いします。 データーで    A      B     C     D 1   ・  ・   5  5     15 6  2     30 7  9     18 ・  ・      ・ ・  ・      ・ 100 87     21 というデーターが有ります。抜き出したい値がこのデーターのA列の値と同じ行のBの値を抜き出す方法を探しています。(例えば2を入力すれば、2はA6の値と同じなので、B6の値30を抜き出す。)できたら関数式で抜き出す方法が有りましたら、よろしくお願いします。

  • Excelでのデータ検索関数について

    Excelでのデータ検索について悩んでいます。 例えば、A列では「あ~お」、B列では「A~H」でC列ではデータが入っている場合でA列の「い」、B列の「C」のデータを検索したいときはどのように関数を組み合わせれば良いでしょうか?色々試したのですがなかなかうまくいきません。vlookup、index関数で組み合わせてできるのでしょうか?やはりVBAでしか無理なのでしょうか? どなたかご存知の方、ご教示ください。

  • Excelでデータ検索&入力

    すいません、皆さんのお力を貸してください。 Excelの事で質問なんですが、 A    B  C  D  E 番号   名前 値  値  合計 2130 中川 4  3  7 2365 安藤 5  1  6 4586 鈴木 3  2  5 7896 宮脇 1  7  8 ・ ・ ・ ・ というデータが沢山あります。 A9   B  C  D  E  ○○○○ 名前 値  値  合計 VLOOKUPを使って、○○○○の所に数字を打ち込めば、 名前・値・値・合計が参照できるようにしました。 番号を打ち込めば、数字が出てくるのですが、 値を変更使用と思って、参照した値を変更すると、 VLOOKUPの関数が打ち込まれているので、 関数が消えるだけで、上の表のデータは書き換わりません。 沢山のデータの中から、 番号でそのデータを抽出し、 その値を変更して、 基のデータの表に反映させるということは、 エクセルでは出来ないんでしょうか? もし、わかる方がいらっしゃいましたら、 教えてください。 宜しくお願いします。 説明が分かりづらかったら、細くします。 おっしゃってください。

  • 複数のEXCELファイルより結果検索(VLOOKUP)

    はじめましてご教授お願いいたします。 現在エクセル関数Vlookupを使用しているのですが 外部の複数エクセルファイルよりデータを抽出するには どうすればよろしいのでしょうか? エクセルファイルA,B,C,Dがあるのですが ファイルAには結果表示用のシートがあります B,C,Dにはそれぞれデータが同じように配置されおります。 ファイルAのシート2セルA1に以下のような関数を記述しております =IF(ISBLANK(A2),"",IF(VLOOKUP(A2,Sheet1!$A$2:$K$60000,2,FALSE)=0,"",VLOOKUP(A2,Sheet1!$A$2:$K$60000,2,FALSE))) 上記関数[Sheet1!A2:K60000]の部分に別ファイルB,C,Dの データ(範囲は同じ)も検索できるようにしたいのですが どのような関数で可能なのでしょうか? ご教授よろしくお願いいたします。

  • エクセル「VLOOKUP」関数について

    エクセルの「VLOOKUP]関数について教えて下さい。 データーがないとき「#N/A」と常に表示されていますが、この「#N/A」を表示しないようにする方法を教えて下さい。

  • excelで文字列を検索する関数を教えてください。

    いつもお世話になります。 エクセルの関数で、シートAのセルA1に入っている文字列をシートBのC列から探し出し、同じ文字列があればTrueをなければFalseを返す関数を教えてください。 わからないながらも色々調べてみたのですが、検索にはVLOOKUPがよく使われているようですが、シートBのC列は、データの並べ替えができないので、VLOOKUPは、使えないのです。 よろしくお願いします。

このQ&Aのポイント
  • 東芝ノートパソコンの液晶パネルの色域についての情報がないため、代用品を探す際に困っています。
  • LP156WF6(SP)(N1)という液晶パネルのcolor gamutの具体的な数値がわからないので、どの代用品が適しているかを判断できません。
  • シールなどからも色域の情報を得ることができず、海外サイトでも詳細な仕様が載っていないため、色域を調べる方法を教えていただきたいです。
回答を見る

専門家に質問してみよう