エクセルのVLOOKUP関数(を使うのだと思います)の、条件式を増やす方法について質問です。



次の検索対象範囲があったとします。

1234 adbd 07
1234 abcd 43
1232 aerd 08
1234 erer 08



この中から、次の条件で探すとします。

「1列目が1234」かつ 「3列目が08」


通常ならば「1列目が1234」という行を探すのがVLOOKUP関数ですが、「さらにもし3列目が一致すれば」その行の任意の列を書き出すという条件を追加するプログラムはできないでしょうか?



例えば、VLOOKUPで2列目を書き出すプログラムを実行した場合、検索範囲のうち

1234 erer 08

が検索結果に一致しますから、ererがそのセルに書き出されます。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2006/09/30 01:51:41
  • 終了:2006/10/01 07:18:12

ベストアンサー

id:tokuya_n No.1

tokuya_n回答回数56ベストアンサー獲得回数72006/09/30 06:43:14

ポイント40pt

DGET関数を使ったほうがいいと思います。

さはら組で(かつ)算数の90点以上は誰?

http://blog.livedoor.jp/excellover/archives/15072702.html

今回のケースならこんな感じかと


a b c

1234 7

a b c

1234 adbd 7

1234 abcd 43

1232 aerd 8

1234 erer 8

=DGET(A4:C8, "b", A1:C2)

id:ReoReo7

なるほどこれは役にたちそうですね。

2006/10/01 07:13:56

その他の回答(4件)

id:tokuya_n No.1

tokuya_n回答回数56ベストアンサー獲得回数72006/09/30 06:43:14ここでベストアンサー

ポイント40pt

DGET関数を使ったほうがいいと思います。

さはら組で(かつ)算数の90点以上は誰?

http://blog.livedoor.jp/excellover/archives/15072702.html

今回のケースならこんな感じかと


a b c

1234 7

a b c

1234 adbd 7

1234 abcd 43

1232 aerd 8

1234 erer 8

=DGET(A4:C8, "b", A1:C2)

id:ReoReo7

なるほどこれは役にたちそうですね。

2006/10/01 07:13:56
id:osamu666 No.2

osamu666回答回数79ベストアンサー獲得回数62006/09/30 07:01:11

ポイント20pt

一番簡単なのはもう一つ列AとCをくっつけたデータの列を現在のA列の前に挿入してそれをキーにしてvloolupすることです。この場合ある条件に対して複数の該当データがある場合一番最初のものが表示されます。

Dget関数を使用すると複数の条件での抽出ができますが、この場合は複数の該当データがある場合はエラーとなります。

http://www.geocities.jp/chiquilin_site/data/050715_database_func...

id:ReoReo7

そうなんですか。ありがとうございます。

2006/10/01 07:14:12
id:kaiton No.3

kaiton回答回数260ベストアンサー獲得回数342006/09/30 07:31:58

ポイント20pt

2案ほど回答します。

この表が、A1から始まっているとします。


作業列をつかって簡単なほう)

  • A列の左に1列追加します。
  • A1=B1&"_"&D1 1234_07のように表示 下に式をコピー
  • =VLOOKUP("1234_08",A1:C4,3,FALSE)
  • A列は不要なら、非表示にする

=B1&"_"&D1は、A列の桁数がそろっているなら、単純に =B1&D1でも良いです。その時はVLOOKUPの式も変えてください。


この表をそのまま使う)

=INDEX(B1:B4,SUM(((A1:A4=1234)*(C1:C4="08"))*ROW(A1:A4))) この式をCtrlとShiftを押しながらEnter

式の前後に{}がつけばOKです。

A1:A4=1234の部分は、A1:A4="1234"でないとだめかもしれません。A列が数字か文字かによってどちらかにしてください。

なお、配列数式を使っているので、表が大きいと遅いです。

id:ReoReo7

簡単なほうがよさそうですね。表をそのまま使うのも魅力ですが。

2006/10/01 07:15:14
id:ardarim No.4

ardarim回答回数896ベストアンサー獲得回数1442006/09/30 10:48:51

ポイント20pt

もう1つ参照用のテーブルを作って対応するのが簡単かと思います。


「1列目が1234」かつ 「3列目が08」という条件を1つにまとめるために、1列目と3列目を1つのセルにまとめてしまい、それをVLOOKUPの条件にすれば、結果的に2つの条件で検索ができます。


以下に例を示します。

D1に数式「=A1&":"&C1」を、E1に「=B1」を入れ、D列、E列にそれぞれコピーします。


A B C D E
1 1234 adbd 07 1234:07 abdb
2 1234 abcd 43 1234:43 abcd
3 1232 aerd 08 1232:08 aerd
4 1234 erer 08 1234:08 erer

D列、E列が参照用のテーブルになります。

「1列目が1234」かつ 「3列目が08」という条件の場合は、VLOOKUPの検索条件に "1234:08" を入れます。

=VLOOKUP("1234:08",D1:E4,2,FALSE)
id:ReoReo7

なるほど。そういう風にやるんですね。

2006/10/01 07:15:38
id:yotinakk No.5

yotinakk回答回数18ベストアンサー獲得回数02006/09/30 11:05:21

ポイント20pt

数字の列の左側の列に

=4桁数字の列&"_"&"2桁数字の列(①)

を埋め込んでおき、この列をキーに

"1234"&"_"&"08"

を検索する。①の列が邪魔なら非表示にすればよいと思います。

id:ReoReo7

早速試してみたいと思います。

2006/10/01 07:15:48

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません