こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCELでACCESSのSwitch関数のような関数はありますか?

Excel2000を使っています。

たとえばA列に県名、B列に支店名、C列に品名・・・と入っている表があるとします。
品名の種類は10個ですが、それが長い表に繰り返し登場します。

やりたいことは
G列に「項番」として、
品名がガムなら「100」チョコなら「250」クッキーなら「400」・・・という風に
品名に与えられた項番を表示させたいのです。

IF文を使えばできるでしょうが10個もあると面倒ですので、たとえばACCESSのSwitch関数のようなものはないでしょうか?
それともやはりVLOOKUPを使うのでしょうか?

アドバイスをよろしくお願いいたします。

投稿日時 - 2007-01-17 22:01:53

QNo.2674275

困ってます

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

VLOOKUP関数を利用するのが良いと思います

別にテーブルを使うことができない事情があるのであれば
=INDEX({"",100,200,300,500},SUMPRODUCT(({"チョコ","ガム","クッキー","アメ"}=B8)*({1,2,3,4}))+1)

=VLOOKUP(B5,{"チョコ",100;"ガム",200;"クッキー",300},2,0)
のような関数も考えられますが…

投稿日時 - 2007-01-18 11:01:09

お礼

ありがとうございました。
今回は別テーブルを作る形でようやくできましたが、紹介してくださった2番目の方法もうまくいきました。
テーブルを作れないときに使ってみます。
(1番目の方法はちょっとむずかしすぎて・・・)

投稿日時 - 2007-01-20 00:25:03

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

エクセルではSWITH関数はありません。
エクセルにおいて形・機能で近いものにLOOKUP(HLOOKUP,VLOOKUPと違い)があり
A1にコードを入れ、B1に、
=LOOKUP(A1,{100,200,250,300;"カムリ","クラウン","ノート","レジェンド"})
のような関数を入れます。
A1に300と入れると、B1にレジェンドと出ます。
質問は割り出しが反対ですが車名ーコードを逆に並べればよい。
これはLOOKUP関数の「配列形式」といい、「ベクトル形式」が別に有ります。
A1の値が検索で見当たらない場合等はどうなるか、解説書を読んでください。
#2のご回答にも出てきていますが、形が少し違うと思ってあげます。

投稿日時 - 2007-01-21 17:42:39

お礼

ありがとうございました。
こちらの方法でもうまくいきました。
新しいテーブルを使わなくてもいろいろ方法があるのですね。
大変勉強になりました。

投稿日時 - 2007-01-22 14:33:05

ANo.3

品名だけでいいなら
「データ」「入力規則」「設定」で
入力値の種類を「リスト」
元の値に「ガム,チョコ,クッキー,・・・」
と設定してみてください。
そのセルを選択すると右に[▼]ボタンがでて、これを押すと元の値が表示されます。

元の値はセル参照も可能です。
同シート内なら「=$Z$1:$Z$100」
別シートなら「挿入」「名前」「定義」でその範囲に名前を付けて、
「=範囲名」
で参照できます。

投稿日時 - 2007-01-18 11:06:01

お礼

ありがとうございました。
が、せっかくですが今回私が知りたい方法とは違うようですが?
それとも私の(回答の)理解不足でしょうか?

投稿日時 - 2007-01-20 00:29:23

ANo.1

品名が10種類では if では出来ません。
VLOOKUP を使うのが妥当と思います。

投稿日時 - 2007-01-17 22:39:05

お礼

ありがとうございました。
そうですね。IFは4つ?まででしたね。
VLOOKUPは苦手でまだうまくいきませんががんばってみます。

投稿日時 - 2007-01-17 23:39:33

あなたにオススメの質問