• ベストアンサー

Excelで3次元成分を指定し、値を取り出す。

A B C D E F 1 k( 0 0 0 ) 10 2 k( 1 0 0 ) 17 3 k( 2 0 0 ) 11 4 k( 3 0 0 ) 4 … から、B、C、D列のそれぞれの値を指定して、その時のF列の値を取り出すにはどうすればいいのでしょうか。ヘルプやインターネットを見ながら考えてみたのですがよくわかりません。VLOOKUP関数を使えばいけそうだと思ったのですがなかなか…。 考え方や、参考になるサイトなどお教えいただけないでしょうか。 よろしくお願いいたします。

  • mihyo
  • お礼率44% (13/29)

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

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

 今仮に      A列  B列  C列  D列  E列  F列 1行目        0    0    0        10 2行目        1    0    0        17 3行目        3    0    0        11 4行目        4    0    0         4 という具合に入力されていて、 H1セルにB列の値を指定する数値を入力し、 I1セルにC列の値を指定する数値を入力し、 J1セルにD列の値を指定する数値を入力し、 K1セルに、その場合のF列の数値を表示させるものとします。  その場合、K1セルには次の数式を入力すると良いと思います。 =IF(SUMPRODUCT(($B$1:$B$999=H1)*($C$1:$C$999=I1)*($D$1:$D$999=J1))=0,"該当無し",SUMPRODUCT(($B$1:$B$999=H1)*($C$1:$C$999=I1)*($D$1:$D$999=J1)*$F$1:$F$999))  又、F列のデータが数値ではなく、文字列である場合には、K1セルには次の数式を入力すると良いと思います。 =IF(SUMPRODUCT(($B$1:$B$999=H1)*($C$1:$C$999=I1)*($D$1:$D$999=J1))=0,"該当無し",INDEX($F:$F,SUMPRODUCT(($B$1:$B$999=H1)*($C$1:$C$999=I1)*($D$1:$D$999=J1)*ROW($A$1:$A$999))))  尚、2番目に記した数式は、F列のデータが文字列データである場合だけではなく、数値データである場合にも対応しています。  それと、どちらの数式もA~F列の表が存在している範囲が1行目~999行目の範囲以内である場合に対応させていますから、もし、表の行数が1000行以上になる場合には、数式中の999と記されている部分の数字を、表の最下段の行番号に合わせて修正する必要があります。  但し、999の部分の数字が大きくなる程、計算時間が長くなりますから、注意して下さい。  ついでに、上記の数式を発展させて、検索を行う範囲を、A~F列の表の行数に自動的に合わせる数式も書いておきます。 =IF(SUMPRODUCT((OFFSET($B$1,,,MATCH(99^9,$B:$B))=H1)*(OFFSET($C$1,,,MATCH(99^9,$B:$B))=I1)*(OFFSET($D$1,,,MATCH(99^9,$B:$B))=J1))=0,"該当無し",INDEX($F:$F,SUMPRODUCT((OFFSET($B$1,,,MATCH(99^9,$B:$B))=H1)*(OFFSET($C$1,,,MATCH(99^9,$B:$B))=I1)*(OFFSET($D$1,,,MATCH(99^9,$B:$B))=J1)*ROW(OFFSET($B$1,,,MATCH(99^9,$B:$B))))))

mihyo
質問者

お礼

お礼が遅れ申し訳ございません. 無事望む結果を得ることができました.ありがとうございました.

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

例示のデータのデータの内容とレイアウトなどがよくわかりませんが、質問の意味がB~D列の値に一致するF列の値を表示させたいということなら、A列に列を挿入し、「=B1&C1&D1」と文字列を連結し、この連結したデータを検索値とするVLOOKUP関数を利用するのが簡単かも知れません。 実際に入力されているデータベースのデータとそのレイアウトおよび表示したい条件の入力されているセル番地などを、もう少し具体的に提示されれば、皆さんからより的確な回答が寄せられると思います。

mihyo
質問者

お礼

お礼が遅れ申し訳ありません. 『&』は初めて知りました.こんな記述方法があったんですね. 参考になりました.

関連するQ&A

  • EXCELで指定した行内にある値以外を抽出する

    こんにちは。 業務で困っていることがあるので、知恵をお貸し下さい。 EXCELで指定した行内にある値以外を抽出したいのです。 A1:対象品番 B1:対象外 C1:数量 D1:納入日 E1:品番  F1:数量 A2:HHH6030 B2: C2: D2:09/9/29 E2:HIH6260 F2:1 A3:HHH6060 B3: C3: D3:09/9/29 E3:IIHK110 F3:84 A4:HHH7000 B4: C4: D4:09/10/1 E4:HHH6030 F4:24 A5:HHH7130 B5: C5: D5:09/10/1 E5:IHH7000 F5:8 A6:HHH7140 B6: C6: D6:09/10/1 E6:HHH7130 F6:2 とあります。 ●E列の中から、A列にある値以外のものを抜き出し、B列に値を返す。 ●の作業をしたいので、VBAを使ってもかまいませんので、何か良い方法があれば教えてください。 よろしくお願いします。

  • excelのVLOOKUPで、照合後、値を表示

    VLOOKUP関数を利用して、商品送付後の入金管理を行いたいと思っています。 送付済(シート1) A列:名前  B列:金額  C列:名前&金額  D列:送付日  E列:     F列: 入金済(シート2) A列:名前  B列:金額  C列:名前&金額  D列:回収日  E列:入金日   「名前と金額が検索値と一致したら、送付済(シート1)のE,F列に、回収日と入金日を表示させる」ようにしたいです。 VLOOKUP関数では、二つの値の照合は出来ないとの事でしたので、C列=名前&金額をいれて、C列での照合をしたいと思っています。 照合後に、回収日と入金日を表示させる関数が分かりません。 ※照合後に値が無い場合は、エラーでなく空白で表示させたいです。 よろしくお願いいたしますm(__)m

  • ExcelでのVLOOKUP関数について

    キー1を1000倍したうえで完全一致のVLOOKUP関数を使うと#N/Aエラーが発生します。 表示上は同じように見えますが内部的に異なる値となっているのでしょうか? 試しにエラー行に対して、キーとターゲットとなる当該セルを「=」でつないで確認しても「TRUE」となります。 添付画像は、 検索先としてA列に基準キーを130.168~130.192(step 0.001)で各行へ入力し、B列はA列を1000倍、C列はB列をROUND関数で整数値に丸めたものをキーとしました。 D列にVLOOKUPで参照する値を入力し、E列以降で以下の異なるパターンで値を参照しています。 (1)【E・F列】 ・E列に整数値をキーとして130168~130192(step 1)で入力。 ・E列をキーとしてB~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,B:D,3,FALSE)』 (2)【G・H列】 ・G列にE列/100をキーとして計算。 ・G列をキーとしてA~D列のVLOOKUP関数としています。   『=VLOOKUP(G3,A:D,4,FALSE)』 (3)【I列】 ・E列をキーとしてC~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,C:D,2,FALSE)』 シートを複製し、キーの入力範囲を0.001~0.025(E列は1~25)にした場合はエラーがでませんでした。 その他の確認としてはTEXT、JIS、ASCなどを組み合わせて文字列としたキー同士のVLOOKUPではエラーにならず値を参照できています。

  • Excel 指定した値を反映するようにしたいのですが。

    A列に 文字列 B列に 数値 C列に 数値 D列に 指定した文字 E列に 文字に当てはまる数字を反映 F列に 文字に当てはまる数字を反映 A列      B列      C列 1 川越    21.2     800 2 鶴ヶ島   29.6     1050 3 東松山   39.4     1400 4 嵐山小山  47.4     1600 5 花園    56.1     1800 例えばですが、上記の様になってまして、 D列に、川越と入力すると E列に「21.2」F列に「800」 といった数字を自動的に入力するようにしたいです。 花園と入力した場合は、「56.1」「1800」といった具合です。 このような事がエクセルでできるのでしょうか^^; また私のエクセルのレベルは、関数をちょこっと触れる程度です。 恐れ入りますがよろしくお願いします。

  • エクセルでの関数について(合致する値を抽出)

    下記下のエクセルにおいて、 ○に一致する値を抽出したいです。 ○には合致するものがいくつかあり、2・3・4・5 すべてを抽出したいのですが、VLOOKUP関数だけではエラーになってしまいます。 どのような関数を用いれば可能ですか? ~~~~~~~~~~~~~~~~~~~~~  A B C D E F 1 ○     ○ 2 2 △     ○ 3 3 ★     ○ 4 4      ○ 5 5 ~~~~~~~~~~~~~~~~~~~~~

  • EXCELで、ある値で検索後、最大値を求める方法について

    EXCELで、ある値での最大値を求める方法がありますでしょうか?数日考えておりましたが結論はでませんでした。 どなたかヒントだけでも結構ですのでご教授頂けないでしょうか? 下記の場合、   A  B  C  D  E  F  G 1       あ  い         2    1  2  2.1    9.6 3    2  3  5.4    5.6    4    3  4  8.2    5.4    5    4  5  1.9    8.2    6    5  1  7.8    4.5    7    6  1  9.6     .    8    7  2  5.6     .    9    8  5  4.5     .    10    9  3  4.8        .    .  .   .         .    .  .   .         .    .  .   .         3000以上 B列の数値をもとにC列の中で検索させ、いくつか該当するとき、その右側のD列の最大値を求めることができるかどうか。 たとえば、B列の1の場合、C列の中で1が2箇所あり、その右側であるD列の値は7.8と9.6となります。そのうちの最大値は9.6ですので、F列の同行に答えとなる値が入ります。そのようなF列の関数等は無いでしょうか? 当方でもいろいろ調べ、DMAX関数が使えそうですが、B列の値が縦(列)となってる場合はうまくいきませんでした。もしB列の値が、縦(列)ではなく横(行)である場合は、OFFSET関数などと併せてうまくいきますが、最大256列(EXCELの制限)までしか扱えません。 何か方法があればヒントだけでも結構ですのでよろしくお願いします。

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  •  エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方

     エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方法。  初めまして。よろしくお願いします。  例) A B C D E F 1赤 2 5 1 2青 9 2 3 青 3黄 1 9 4 黄 4緑 3 4 2 5黒 8 4 9 6紺 2 5 4 紺 7橙 5 1 6 8 9  D列にある値がB列にある値とC列にある値の間に有る場合、A列に有る値をE列に抜き出す(例では2行目、3行目、6行目のDの値がBCの値の間に有るためにEのセルにAの値を表示される)関数式を教えていただきたく、よろしくお願いします。

  • エクセルのIF関数で、真の場合OK!で偽の場合指定のセルの値が出るよう

    エクセルのIF関数で、真の場合OK!で偽の場合指定のセルの値が出るようにしたいのですが、可能でしょうか? A  B C D E F 10 8 1 0 1 1 10 8 2 0 0 OK! EはA-(B+C+D)で、FはEが0の場合OK!、偽の場合Eの値になる様にしたいです。 わかりにくいかとも思いますが、よろしくお願い致します。

  • エクセルで計算後の値で検索したい

    教えてください。 たとえば A1セルに1 B1セルに2 C1セルに=A1+B1という数式を入れたら3と表示されます D1に=VLOOKUP(C1,E1:F10,2,FALSE)としたらN/Aとなります E1は1、E2は2、E3は3、E4は4・・・・・・ F1は11、F2は12、F3は13、F4は14・・・・・ C1セルの3という値でE3の3を検索しF3の13を表示させることはできないでしょうか? アドバイスお願いします。

専門家に質問してみよう