• ベストアンサー

VLOOKUP関数について(数式を短く)

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列の数値は連番に出来ないのです。 連番に出来れば問題無いのですが…。 どうかよろしくお願い致します。

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

  • ベストアンサー
  • zinchan
  • ベストアンサー率49% (97/197)
回答No.1

 もし、ワークシートの表中に列を新たに挿入することができれば、方法はあります。  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)」で、それぞれ表示したい項目名が表示されます。  ご質問はこういうことで解決されますでしょうか?

bucchi-
質問者

お礼

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

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

やっと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)段検索」とでも名付けます。

bucchi-
質問者

お礼

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

  • tbobi
  • ベストアンサー率45% (544/1189)
回答No.3

  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関数でそのセルの値を取得しています。

bucchi-
質問者

お礼

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

  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんばんは >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はそのための式です)

bucchi-
質問者

お礼

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

関連するQ&A

  • vlookup関数のことになりますm(_ _)m

    エクセルのvlookupに関してですが、どうやっても表から対象の内容を 1つしかひっぱてこないので、どうやったら、入力した内容に合致した 全ての内容をひっぱてくれるのか教えてくださいませm(_ _)m 表は.... 入力するところは1つです。 入力する数値⇒【  】   参照する表は A  B 200 ばなな 200 みかん 300 りんご 300 イチゴ 300 キュウイ 500 すいか 700 めろん になります。。。(Aは重さ、Bは果物名です) 現在 結果の欄に【=VLOOKUP(入力欄,A1:B7,2,TRUE)】と式を入れているのですが、この場合、数値を"400"と入力した場合 結果欄には【キュウイ】が表示されますが、同じ数値である【イチゴ】と【りんご】を下のセルもしくは別のセルに併せて表示させるにはどのようにしたらいいのでしょうか? ※結果には入力欄に入力した値よりも低いけれども一番近い物が選ばれる様にしたいのです。例えば 入力値が260であれば【ばなな】【みかん】が、、入力値が520であれば【すいか】だけが表示されるという形で。。。 ※果物は100ぐらいありますので、200<300 という風に1個づつしてしまうのは。。チョットきついかもしれないです

  • VLookUp関数?

    エクセルでの質問です。 1 りんご 2 みかん 3 メロン というような表があったとします。どこかのセルに「りんご」と 入力すると隣のセルに「1」というように表示させる方法は何か ありますでしょうか…? VLookUp関数なのかな?と思いつつ見てみたのですが、 使い方がわからず、この関数で合っているかどうかもわかりませんでしたので…。 宜しくお願いします!

  • vlookup関数について

    vlookup関数について教えてください。    A       B         C      D      E        1  あじ    りんご     2  さば    みかん            3  さんま   ばなな        という内容で、D1セルに入力した内容に応じてE1セルに内容を転記させていました。 E1=VLOOKUP(D1$A$1$B3,2,FALSE) 上記で運用していたときはうまくいったのですが、 Cの列にも文字をいれ、E1セルにはCの内容を検索して、B列の内容を転記したいと 思って作りかえるとうまくいきません。 今回の新しいやり方では、 ・A列からの検索はいらない(でも他ファイルから参照されているので、削除、移動はできない) ・E1=VLOOKUP(D1$A$1$C2,2,FALSE)では #N/A となる ・A列からの検索がいらないから、E1=VLOOKUP(D1$B1$C2,1,FALSE) でも #N/A 調べてみたのですがわからなくて・・・ どこがおかしいのか、教えてください。宜しくお願いします。

  • VLOOKUPの検索値について

    エクセルでVLOOKUPの関数を使うときの「検索値」に関する質問です。 この「検索値」が数式結果だと反映されませんよね? そこで範囲指定をして、「値だけコピー貼付」をしたのですが、 やっぱり反映されません。 <sheet1>   A      B      C     D 1 123    りんご    10円    XXX 2 124    みかん    20円    YYY 3 125    めろん    30円    ZZZ 4 126    かき     40円    QQQ   ↑   この「123」や「124」が   別のシートからVLOOKUPで「DのセルがXXXなら123にする」   という数式の結果なんです。 この<sheet1>を利用して、別の<sheet2>に VLOOKUPで「“123”と入力したら“りんご”となる」 というようにしたいのですが、 この“123”“124”が数式結果のため、反映されません。 値だけ貼り付けても反映されません。 上書きで“123”“124”と入力すれば反映されますが 数が多いので困っています。 初心者なので、できるだけわかりやすく教えていただけたら 嬉しいです。

  • VLOOKUP関数について(初心者です)

    エクセルで <sheet1>    A     B     C  1  1 2  2 3  3 <sheet2>    A    B    C 1  1    りんご  3/1 2  2    みかん   3  3    いちご  3/20 というファイルがあります。 そこで <sheet1>のB1 のセルに =VLOOKUP(A1,sheet2!A:C,3,0) という関数を入れます。 (この例ではsheet1と2は同じになってますが  実際はセルの大きさや行が違います。  つまり、sheet2で入力したものを  sheet1でまったく違う形にしてプリントアウトしたいんです) 【ここからが質問です】 上記の場合で、 sheet2のC列に何も入力されていないとき sheet1のB1に何も表示しないようにできますか? 現在は#N/Aとなっています。 よろしくお願いします。

  • 基本的な関数の質問なのですが。。

    こんにちは、エクセルについて質問です。 果物  箱数 みかん 20 みかん 30 りんご 40 もも  70 みかん 20 りんご 10 みかん 30 上記の図において、セルF5に入力規則でリスト(みかん・りんご・ももの三択)をつくり、セルF6にF5で選択した果物の合計箱数を出したいと思います。 例えばりんごを選択したら50がでるように。 この場合、どのような関数・数式にすればよろしいでしょうか。 アドバイスをお願い致します。

  • ExcelでVLOOKUPではできなかった検索

    このようなエスセルデータを変換できる関数はありますでしょうか? VLOOKUPではできなかった為いい案があれば教えて頂ければ幸いです。    A    B    C 1 10/10  りんご   1 2 10/10  みかん   1 3 10/10  りんご   1 4 10/11  いちご   1 5 10/11  りんこ   1 6 10/12  みかん   1 このデータを別シートに下記のようなデータに変換したい         A    B    C        10/10  10/11  10/12 1 りんご   2    1    0 2 みかん   1    0    0 3 いちご   0    1    0 要点は、同じ日に同じ商品が売れてたものは自動で合算をしセルに反映することがひつようになります。 何卒宜しくお願い致します。

  • ピボットグラフを作りたいのですが、元データの数式を入れている項目が表示できません

    初心者です。 こちらで以前数式を教えていただきましたもので、16ある項目を1を入力するとりんご 2を入力するとみかん・・・・というようになるIFとVLOOKUPの数式を入れたデータが入っているものを使って棒グラフを作りたいのです。 ビボットグラフ通りに進むと数式が入っているりんごやみかんがグラフ項目に出ず、換わりにグラフ項目は1.2.と数式の入れていない方に項目としてでてしまいます。(A列コード番号・B列1.2・・・C列にりんご(C列に数式を入れています)の表です) グラフ横軸項目名がりんご、みかんと出る方法を教えて下さい。 必要なのはりんご.みかん・・・の項目とその個数です。 宜しくお願いします。

  • VLOOKUP関数の「検索値」を範囲で指定する

    エクセルのVLOOKUP関数で、通常は検索値は一意のものを指定しますが、範囲指定しているケースがありびっくりしてしまいました。これはどのようなことなのでしょうか?   A   B 1 品名  単価 2 もも  200 3 りんご 150 4 みかん 100 5 なし   80 とあり、   C   D  1 品名  単価 2 なし 3 もも 4 みかん C列に入れた検索値で、上の表から単価を検索する場合、 通常 =VLOOKUP(C2,$A$2:$B$5,2,FALSE)といった感じで D2のセルに打ち込み、D2のセルの場合は、「検索値はC2」と固定している思うのですが、 =VLOOKUP($C$2:$C$4,A2:B5,2,FALSE)でも 同じ結果になっています。もちろんこれをそのままD4までコピーしても求める通りの結果が出てきます。 検索値は、式においては必ずしも一意で指定する必要はないのでしょうか?

  • エクセル関数 Vlookupと配列数式(とsumif)の違い、利点不利点

    以下のような設定でvlookupと配列数式とifを組み合わせた場合の結果が異なる(ことがある?)んですが、原因を教えていただけないでしょうか。あと、配列数式のここが便利!(このvlookupの類似機能に限ったことではない)というものがあれば付随して教えてくださると助かります。 A1:A3 に順に1,2,3と(参照される側の)インデックスが入力されている。 B1:B3 はa,b,cと文字が入力されている C1:C3 には2,2,3と(参照する側の)インデックスが入力されている。 C列のインデックスにより、A列のインデックスに対応するB列の文字列を引いてきたいとき、普通はvlookupで、 <セルD1>=vlookup(C1,A1:B3,2,0)などとすると思います。 これを配列数式を用いて、 <セルD1:D3>= if(C1:C3=A1:A3,B1:B3,0) として同じことをしようとしても、何故かD1セルのみ=0となってしまいます。何故でしょうか?配列数式にそれほどくわしくありませんが、利用価値が非常に高そうなのでわからないことを解明したいのです。 (sumifもタイトルにいれたのは、B1:B3が文字列ではなく数値ならば、同じことをsumifで表現できるから、それだけの理由です) 宜しくお願いします。

専門家に質問してみよう