• ベストアンサー

エクセルデータの抽出について

A列とB列にデータが入っています。 A列が×になっている行のB列を抽出し、D列に表示するにはどんな計算式を使えばよいでしょうか。 VLOOKUPではうまくいかず、過去の質問等調べましたが適切な回答が見つかりませんでした。。。 よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

添付図: ほんのちょっとした工夫で,普段使いの関数だけで十分出来ます。 A1: =IF(B1="×",COUNTIF($B$1:B1,B1),"") 以下コピー E1: =IF(ROW(E1)>MAX(A:A),"",VLOOKUP(ROW(E1),A:C,3)) 以下多めにコピー

slowstep4035
質問者

お礼

ご回答ありがとうございます。 何とか計算式も理解できました。

その他の回答 (3)

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

回答しようよしたら、どんどん回答が付いてしまいました。 関数案で D1セルに =INDEX(B:B,SMALL(INDEX((A$1:A$100="○")*100+ROW(A$1:A$100),),ROW()))&"" と入れて下までコピー この手の関数の説明は難しいのですが INDEX((A$1:A$100="○")*100+ROW(A$1:A$100),) は、A列が〇なら、その行番号に100を加算された数値、それ以外は その行番号 が入った 架空の範囲を作成しているところにが味噌です。 既に回答にありますように Vlookup関数では、条件にあった最初の行しか検索できないので、複数のデータ抽出はできません。 作業列を利用するか、配列関数を使うことになります。 エクセルには、データ抽出の機能がありますので フィルターオプション(エクセル2007以上では、フィルターの詳細設定)で抽出すると自由度が広がります。

slowstep4035
質問者

お礼

ご回答ありがとうございます。 解説もとても参考になりました。 配列関数について少し勉強してみようと思います。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

【方法その1】作業列を使用する方法  今仮に、F列を作業列として使用するものとします。  まず、F1セルに次の数式を入力して下さい。 =IF(INDEX($A:$A,ROW())="×",ROW(),"")  次に、F1セルをコピーして、F2以下に貼り付けて下さい。  次に、D1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($F:$F),"",INDEX($B:$B,SMALL($F:$F,ROWS($1:1))))  次に、D1セルをコピーして、D2以下に貼り付けて下さい。 【方法その2】関数のみで行う方法  まず、D1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNTIF($A:$A,"×"),"",INDEX($B:$B,SUMPRODUCT(ROW(INDEX($A:$A,1):INDEX($A:$A,MATCH("゛",$A:$A,-1)))*(INDEX($A:$A,1):INDEX($A:$A,MATCH("゛",$A:$A,-1))="×")*(COUNTIF(OFFSET(INDEX($A:$A,1),,,ROW(INDEX($A:$A,1):INDEX($A:$A,MATCH("゛",$A:$A,-1)))),"×")=ROWS($1:1)))))  次に、D1セルをコピーして、D2以下に貼り付けて下さい。

slowstep4035
質問者

お礼

ご回答ありがとうございます。 初心者の私には作業列を使うほうがよさそうです。。。

noname#204879
noname#204879
回答No.1

D1: {=IF(ISERROR(SMALL(IF(A$1:A$100="×",ROW(A$1:A$100),""),ROW(A1))),"",INDEX(B$1:B$100,SMALL(IF(A$1:A$100="×",ROW(A$1:A$100),""),ROW())))} (配列数式)

slowstep4035
質問者

お礼

ご回答ありがとうございました。 計算式の意味があまり理解できていませんがひとまず試してみます。

関連するQ&A

  • エクセルで重複しないものだけを抽出したい

    下記のようなデータがあります。 A B C D 1 20 30 40 1 20 32 41 1 20 30 49 1 20 81 39 2 20 76 40 2 20 32 41 2 20 30 49 3 20 81 39 3 20 39 40 3 20 32 41 4 20 30 49 4 20 81 98 このうち、列Aの他と重複しない部分であり、かつ先頭行を抽出するにはどのようにしたらよいでしょうか? 上記の例で言うと、列Aの1から4までのそれぞれ1行目を選ぶという作業です。 抽出後 A B C D 1 20 30 40 2 20 76 40 3 20 81 39 4 20 30 49 vlookupなどの関数でできるのでしょうか?教えてもらえたらうれしいです。お願いします。

  • エクセルのオートフィルタでのデータ抽出&カウント

    エクセルのローデータでのオートフィルタでのデータ抽出&カウントで困っています。 A列にNo.、B列にデータB、C列にデータC、D列にデータDがあるとします。 それぞれの列に1~9までの数字があり、 それぞれの列、 データの一番下(正確には1行開けて)にはSUMやCOUNTIFなどの関数(計算式)が入っています。 で、これをフィルターにかけ抽出した際、この抽出したデータのみで計算の値を表示したいのですが、 やってみると 全データの計算の値で表示されてしまいます。 どうすればよいのでしょうか? 大変困っています。 よろしくお願いいたします。

  • Excel データの抽出について教えて下さい。

    初めて質問させて頂きます。 Excelでデータの抽出と言ったらいいでしょうか・・・ 「一定の条件に当てはまった場合に、別のセルに数字を入力する」 というような処理をしたいのですが、データ量が多くて、 どのようにやったら効率がいいのか、頭を悩ませています。 例えば・・・       A列  B列 1行目  111   A 2行目  112   B 3行目  115   C 4行目  115   C 5行目  118   D といったようなデータが1500件ほどあります。 このデータを使って、A列の中で番号が2つ(又は3つ等)あるものに、      A列   B列  C列 1行目  111   A 2行目  112   B 3行目  115   C    1 4行目  115   C    1 5行目  118   D といった感じで決まった数字を表示する方法がないでしょうか? こんな説明でご理解頂けるかどうか、心配なんですが・・・。 いい方法をご存知の方がいらっしゃいましたら、力を貸して下さい。

  • エクセルでのデータ抽出について

    初めて質問させていただきます。 2つの銘柄の株価データをエクセルにコピペした後、日付と時刻が同じものを行を揃えて抽出したいのですが、いろいろ試してみましたがわかりません。 具体的には次のようにしたいのですが・・・。 【元データ】  A列     B列    C列    D列    E列    F列 ・ ・ 2007/11/9  9:20:00  520  2007/11/9  9:25:00  1544 2007/11/9  9:15:00  514  2007/11/9  9:20:00  1520 2007/11/9  9:10:00  513  2007/11/8  15:00:00  1430 2007/11/9  9:05:00  509  2007/11/8  14:55:00  1425 2007/11/9  9:00:00  501  2007/11/8  14:50:00  1427 2007/11/8  14:55:00  497   2007/11/8  14:45:00  1431 ・ ・ 【抽出後】 ・ ・ 2007/11/9  9:20:00  520  2007/11/9  9:20:00  1520 2007/11/8  14:55:00  497  2007/11/8  14:55:00  1425 ・ ・ どなたか宜しくお願いいたします。

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • エクセルのデータを抽出したいのですが・・・

    エクセルのデータを抽出したいのですが・・・ いつもこちらでお世話になっています。 5000行あるデータの中から D列に入っているA事業所のうち、 R列に入っているB市で始まる住所(番地まで入っています) 分のデータ件数を抽出したいのですが どのようにすれば良いのかわかりません。 どのように数式を入れれば良いのか教えてください。 宜しくお願いします。

  • Excelでデータ抽出!

    かなり切羽詰ってます。助けてください。 excelで3×15の表を作ってそこからデータを抽出したいのです。列と行の数値はそれぞれ別のセルからの参照にしたいのですが...。ifとかvlookupとかいろいろ使ってみたのですがうまくいきません。エクセルでゆーところの'B3'を出したいだけのことなのですが...。誰か助けてください。

  • Excel 複数の項目合致するデータを抽出したい

    是非、よろしくお願いいたします。 以下の状況です。 sheet1には A、B、C、Dという4列があります。データは1000行くらいです。 sheet2には A、B、C、Eという4列があります。データは2000行くらいです。 この状況で、sheet1のD列の右に新しい列を作り、 「sheet1の(例えば)A1、B1、C1と合致する行のsheet2のE列データ」を、 sheet2のABC列範囲を検索して抽出したいのです。 項目が一つであればvlookup関数でできるものを「複数項目に合致」のため上手くいきません。 この3列のデータを結合して一つにしてみましたが、結合後のデータが16桁以上のため末尾が「0」になってしまい、正確に検索できません。 何か上記を可能にする方法はないでしょうか? よろしくお願いいたします。

  • エクセルのデータ抽出について

    基本的な内容かもしれませんが、どうしてもわからないので教えてください。   A B C D 1 1 b 3 c 2 2 t 4 y 3 3 r 3 o 4 4 l 5 p 5 5 k 3 w 上記のようなデータベースがあったとします。このシートと異なるシートのあるセルにたとえば3と入力すると   A B C D 1 1 b 3 c 2 3 r 3 o 3 5 k 3 w のようにC列が3である行が抽出され、なおかつA列の昇順で並ぶということをしたいのですが、vlookup等ではうまくできません。 フィルタを使用せずに実現したいのです。お願いします。

  • エクセル2003 重複データの抽出

    エクセル2003を使っています。 重複したデータの抽出を行いたいのですが、 例えば、  A      B     C      D コード  書籍名  出版社名  著者 といった感じのデータが1万件ほどあります。 このうち、B列の「書籍名」が重複しているデータを抽出したい です。(抽出したものは、書籍名だけではなくて、ほかの出版社や著者の指定したデータも表示させたい。) VLOOKUPなどを使えばできないこともないのですが、一万件の 処理を行う上に、パソコンも非力なので時間がかかってしまい 困っています。 どうぞよろしくお願いします。

専門家に質問してみよう