重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VLOOKUP関数を短くしたいのですが可能でしょうか?

【例】
  A  B  C  D
1 1 動物   1 いぬ
2         2 ねこ
3 2 果物   1 りんご
4         2 みかん
5 3 車     1 ホンダ
6         2 JEEP
7 4 国    1 日本
8        2 アメリカ
9 5 色    1 あお
10        2 あか
11 6 菓子  1 チョコ
12       2 パイ
13 7 飲物  1 ビール
14        2 お茶

の表があるとき
例えば
B20のセルに 5 色
B21のセルに 2 あか
というようにしたいのですが
やはり「IF」を使って長い数式にしかならないでしょうか?

C列の数値は連番に出来ないのです。
連番に出来れば問題無いのですが…。

どうかよろしくお願い致します。

A 回答 (4件)

 もし、ワークシートの表中に列を新たに挿入することができれば、方法はあります。


 C列とD列の間に、1列挿入します。各セルに、「=A1&C1」、「=A1&C2」、「=A3&C3」・・・と入力します。
 すなわち、新たに各項目を示す連番を作成させます。
 今までのD列の内容はE列になっていますので、A20にA列の数値を入れるとすると、B20には「=VLOOKUP(A20,A1:B14,2,FALSE)」、A21に小項目(C列)の数値を入れるとすると、B21には「=VLOOKUP(A20&A21,D1:E14,2,FALSE)」で、それぞれ表示したい項目名が表示されます。
 ご質問はこういうことで解決されますでしょうか?
    • good
    • 0
この回答へのお礼

早速ありがとうございます♪
バッチリです♪
助かりました。

お礼日時:2003/05/23 10:19

やっとVLOOKUPで出来ました。

偶々運良くDIRECTが使えて
実現しました。
(テストデータ)A1:D9
5色1黄
2赤
4紺
6菓子1チョコ
3飴
6クッキー
7飲み物1ビール
3焼酎
5清酒
(入力)E1に大分類コードを入力する。
    E3に小分類コードを入力する。
(表示)E2に大分類コードを表示する。
    E4に小分類コードを表示する。
(関数式)E2に=VLOOKUP(E1,A1:B9,2,FALSE)
     F1(どこでも良いが)に
     ="C"&MATCH(E1,A1:A9,0)
     E4に=VLOOKUP(E3,INDIRECT(F1):D9,2,FALSE)
F1とE4の式がポイントです。
例えばE1に7でE2に飲み物、E3に5でE4に清酒と出ます。
●質問が「VLOOKUP関数を短くしたいのですが」では回答者
が集まらないと思う。Vlookup関数を使うことを当然視しているが、回答者の創意工夫に任せるべきです。たまたま私の回答はVlookupですが。
この質問のタイプ・表題は、私なら「多(2)段検索」とでも名付けます。
    • good
    • 0
この回答へのお礼

imogasiさんありがとうございます。
関数の知識が少ないのでVLOOKUP
しか浮かびませんでした…。
また機会がありましたらよろしくお願い致します。

お礼日時:2003/05/23 10:31

 


bucchi-さん こんばんは。
B20に 5 と入れるとC20に 色
さらにB21に 2 といれるとC21に あか と出したいなら、こういう方法もあります。

C20にはvlookupでできますよね
=VLOOKUP(B20,A1:B14,2,0)
C21は
=INDIRECT(ADDRESS(B20*2+B21-2,4))
これはvlookupと違ってセル位置で計算しています。

元の式は
=INDIRECT(ADDRESS(B20*2-1+B21-1,4))
です。

ADDRESS関数でセル番地(行番号、列番号)を取得し、INDIRECT関数でそのセルの値を取得しています。
    • good
    • 0
この回答へのお礼

tbobiさんありがとうございます。
INDIRECT ADDRESS関数
勉強になりました。
今後の参考にさせていただきます。
ありがとうございました。

お礼日時:2003/05/23 10:26

こんばんは



>C列の数値は連番に出来ないのです。
この意味が C列通しでは連番とできないが
例のように 項目別には連番となっているのであれば

B20に A列番号入力
 C20に式 =VLOOKUP(B20,$A$1:$B$14,2,0)
B21に C列番号入力
 C21に式
 =IF(AND(B21>0,COUNTA(INDEX($B$1:$B$14,MATCH(B20,$A$1:$A$14,0)):INDEX($B$1:$B$14,MATCH(B20,$A$1:$A$14,0)+B21-1))=1),INDEX($D$1:$D$14,MATCH(B20,$A$1:$A$14,0)+B21-1),"")

B21に合致しない数値を入力した時のエラー回避式は
だけは組込んであります。(C21の前半の2/3はそのための式です)
    • good
    • 0
この回答へのお礼

INDEX MATCH関数を使用したことがないので
勉強になりました。
ありがとうございました。

お礼日時:2003/05/23 10:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!