- ベストアンサー
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関数を使えばいけそうだと思ったのですがなかなか…。 考え方や、参考になるサイトなどお教えいただけないでしょうか。 よろしくお願いいたします。
- みんなの回答 (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))))))
その他の回答 (1)
- MackyNo1
- ベストアンサー率53% (1521/2850)
例示のデータのデータの内容とレイアウトなどがよくわかりませんが、質問の意味がB~D列の値に一致するF列の値を表示させたいということなら、A列に列を挿入し、「=B1&C1&D1」と文字列を連結し、この連結したデータを検索値とするVLOOKUP関数を利用するのが簡単かも知れません。 実際に入力されているデータベースのデータとそのレイアウトおよび表示したい条件の入力されているセル番地などを、もう少し具体的に提示されれば、皆さんからより的確な回答が寄せられると思います。
お礼
お礼が遅れ申し訳ありません. 『&』は初めて知りました.こんな記述方法があったんですね. 参考になりました.
お礼
お礼が遅れ申し訳ございません. 無事望む結果を得ることができました.ありがとうございました.