エクセルの関数(抽出)について

このQ&Aのポイント
  • エクセルで特定の条件に一致する値を抽出する方法について教示してください。
  • 具体的には、特定のセルに入力した値と完全一致する値が存在する場合、その値がある行の別のセルの値を抽出したいです。
  • 並び替えをせずに、3000行以上のデータに対応できる方法が望ましいです。
回答を見る
  • ベストアンサー

エクセルの関数(抽出)について

  1  2   3   4  5 A   あ   ko   ▲ ■  B   か   sa C   もへ  we D   あ   ty E   てろ   lii F   ぎ   loer G   か   ttg H   あ   rer 上のような表があったときに、A4のセル(▲)に「あ」と入れると、 A5のセル(■)に『rer』と入るような関数(又はそれに代わる方法)を ご教示ください。 やりたいこと: 2列目の中に、▲と完全一致する値(又は文字列。以下同じ。)が存在するとき、 同じ列の3列目の値を返したい。 ただし、2列目には完全一致する値が何度も登場する可能性があり、 2列目に▲と完全一致する値が複数存在する場合は、その内一番下の行 のものを選び、同じ行の3列目の値を■に返したい。 条件: ・可能であれば、2列目をキーにした並び替えなどは行いたくない。 ・現状のデータは、3000行程度のデータ量であるが、今後じょじょに増えていく。 以上です。 説明が明瞭でなく、イメージがお伝えできていないかも知れませんが、 どうかご教示頂きたく、なにとぞよろしくお願い致します。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

行と列が何だか判りにくいですが、添付の図ではD4セルに↓の式を入れて居ます。 =IF(C1="","",OFFSET(B$1,SUMPRODUCT(MAX((A$1:A$3000=C1)*ROW(A$1:A$3000)))-1,0)) ただ、3000行もやると遅くなるかもしれません。

chesty777
質問者

お礼

ものすごく早い回答、ありがとうございました。 大変参考になりました。

その他の回答 (3)

回答No.4

もう一案 =IF(D1="","",INDEX(C1:C8,LOOKUP(2^20,ROW(B1:B8)*(B1:B8=D1))))

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

複雑な式を使うと計算が重くなります。分かり易く簡単な方法は作業列を作って対応することでしょう。 表がNo1さんのような表になっているとしてC1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A1="","",A1&COUNTIF(A$1:A1,A1)) D1セルから下方には求めたいA列にある文字列を入力します。例えばD1セルに「あ」と入力します。 E1セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =IF(D1="","",INDEX(B:B,MATCH(D1&COUNTIF(A:A,D1),C:C,0)))

chesty777
質問者

お礼

ありがとうございました。 大変参考になりました。 ファイルの重さにまで配慮頂き、助かりました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 =IF(COUNTIF(B:B,D1),INDEX(C:C,MAX(INDEX((B:B=D1)*ROW(B:B),))),"")

chesty777
質問者

お礼

ありがとうございました。 大変参考になりました。

関連するQ&A

  • Excelの関数を教えてください。

    Excelの関数で例えば シートAのB行の中の値とシートBのセルA1の値、シートAのC行の中の値とシートBのセルB1の値が一致した行のF列の値を返す関数を考えているのですが、いろいろ試してもエラーになってしまいます。(B列とC列の一致する行は1つしかありません) これができないと家に帰れません;; どなたか、教えてください! よろしくお願いします。

  • エクセル関数を教えてください

    日時が一致した列の指定したセルの値を 別セルに表示   A    B   C   D 1 7/1 7/2 7/3 7/4 2 256  264 273  286 3   8   7   13 4 5 6 7/3 7 ? A6(日付)と一致した列の3行目をA7に表示させる関数を教えてください。 勉強不足ですみませんがよろしくお願いします。

  • エクセル 空白以外のセルを関数などで抽出したい

    以下のように、1列上に、入力されてるセルと空白セルが存在します。   A 1|あああ 2| 3| 4|いうえ これを、以下のように抽出したいのですが、方法を教えて下さい。 オートフィルタなどではなく、集計終了後、以下のように抽出された値を そのまま別シートにコピーしたいと考えています。     A 100|あああ 101|いうえ ●ちなみに、2行目や3行目に、集計終了までに値が入る可能性があります。 よろしくお願いします。

  • エクセルの関数で

    Sheet1のA列に格納された値と一致する値を、Sheet2のA列に格納された値から検索し、もし一致する値が存在すればSheet1のE列に○を付けていくということを実現したいのですが、VLOOKUPを使ってもなかなかうまくいきません。 ちなみに、Sheet1とSheet2のA列には確かに一致する値(文字列)は存在するのですが、数量と並びはバラバラです。VLOOKUPの場合、DBでいう主キーみたいなものと値は一致している必要がありますか。例えば順番はバラバラでも、「1」という数値と「りんご」という文字列は両シートで共通して一致していないといけないみたいな…。 エクセルの達人の方がいらっしゃいましたらどうか宜しくお願い致します。

  • Excel関数

    緊急です。 ExcelでVBAを使用せずに、 セルA1と列Bのどれかが一致した時に、 一致した行の、つまりセルA1と一致したB○の横の列Cにある値をとってくることって出来ますか?

  • エクセルでの関数を使った条件抽出方法について

    エクセル初心者です。 エクセルでの関数を使った条件抽出方法についてどなたかご教授願います。 よろしくお願いします。 Sheet1の特定のセルに対して、Sheet2中にある条件に一致するセルの値を 表示させる方法がわかりません。 <具体的内容> 次のような2つのシートがあります。 Sheet1       -------------------------     A     B     C  1                2  2  費目1 3  費目2 4  費目3 ------------------------- Sheet2 -------------------------     A     B     C     D 1  2          1     2     3 3  費目2   100   200   300 4  費目1    30    10    20 5  費目3   150   350   250 ------------------------- Sheet1のC1のセルと同じ数値をSheet2の2:2行から探して、 一致する数値に該当する列の3~4行目の値を、 Sheet1のA2:A3の費目とSheet2のA3:A5の費目とが 一致するようにして、Sheet1のB2:B3に表示したいです。 このときSheet1のB2~B3にはどのような関数式を入れたらよいですか? 上の場合だと、Sheet1のB2=10、B3=200、B4=350となってほしいです。 HLOOKUP、COLUMNなど組み合わせてみたのですが、 全くうまくいきません。簡単ではないのでしょうか? どなたか教えてください、よろしくお願いします。

  • excelのデータ抽出

    縦軸の条件と横軸の条件からデータを抽出する方法を教えてください。 以下のような表があります。    A  B   C   D   E  ・・・・ 1    0.5  2.5  3.1  5.5 2 40   2  5   10  3 3 55 4 35 1行およびA列の値を別セルに入力して、クロスするデータを出したいのですが、例えば別セル(1)に40と入力し別セル(2)に5.5と入力すれば、別セル(3)に3と抽出したいです。 また、出来れば別セル(2)に入力する値が表にない場合、入力した値より大きな値で一番近い値を読み取れればベストなんですか。 例えば別セル(2)に5.4と入力した場合には5.5の列を抽出 なにか良い方法はありますか? よろしくお願い致します。

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • Excelでのデータ抽出

    Excelで外部結合風のデータ抽出を教えてください。 シートAとシートBに表形式のデータがあり、 シートAのA列の値とシートBのA列の値が一致するシートBの 行を抽出するのが目的です。 具体的には次のような感じです。 シートA         シートB ----------------  ---------------- A列 | B列 | C列     A列 | B列 | C列 ----------------  ---------------- 2  | 2B  | 2C      1  | 1BB | 1CC ----------------  ---------------- 4  | 4B  | 4C      2  | 2BB | 2CC ----------------  ---------------- 6  | 6B  | 6C      3  | 3BB | 3CC ----------------  ---------------- ↓ シートB ---------------- A列 | B列 | C列 ---------------- 2  | 2BB | 2CC ---------------- 以下以外の方法がありましたら教えてください。 1)アクセスに両シートのデータを取り込み、2つのテーブルを外部結合で連結させる。 2)マクロで二重ループをつくり、A列が一致した行を取り出す。 よろしくお願いします。

  • エクセル関数で

    ある特定のセルに、そのセルが存在する行の一番右端の特定の記号(たとえば「○」印)を特定して、そのセルが存在する列の上に存在する特定のセルの値を表示させる方法をおしえて下さい。 12        ↑ セル→→→→→○ ・・・一番右端(○は複数存在) ↑ (12)と表示させたい。

専門家に質問してみよう