- ベストアンサー
EXCELでACCESSのSwitch関数のような関数はありますか?
Excel2000を使っています。 たとえばA列に県名、B列に支店名、C列に品名・・・と入っている表があるとします。 品名の種類は10個ですが、それが長い表に繰り返し登場します。 やりたいことは G列に「項番」として、 品名がガムなら「100」チョコなら「250」クッキーなら「400」・・・という風に 品名に与えられた項番を表示させたいのです。 IF文を使えばできるでしょうが10個もあると面倒ですので、たとえばACCESSのSwitch関数のようなものはないでしょうか? それともやはりVLOOKUPを使うのでしょうか? アドバイスをよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VLOOKUP関数を利用するのが良いと思います 別にテーブルを使うことができない事情があるのであれば =INDEX({"",100,200,300,500},SUMPRODUCT(({"チョコ","ガム","クッキー","アメ"}=B8)*({1,2,3,4}))+1) =VLOOKUP(B5,{"チョコ",100;"ガム",200;"クッキー",300},2,0) のような関数も考えられますが…
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルではSWITH関数はありません。 エクセルにおいて形・機能で近いものにLOOKUP(HLOOKUP,VLOOKUPと違い)があり A1にコードを入れ、B1に、 =LOOKUP(A1,{100,200,250,300;"カムリ","クラウン","ノート","レジェンド"}) のような関数を入れます。 A1に300と入れると、B1にレジェンドと出ます。 質問は割り出しが反対ですが車名ーコードを逆に並べればよい。 これはLOOKUP関数の「配列形式」といい、「ベクトル形式」が別に有ります。 A1の値が検索で見当たらない場合等はどうなるか、解説書を読んでください。 #2のご回答にも出てきていますが、形が少し違うと思ってあげます。
お礼
ありがとうございました。 こちらの方法でもうまくいきました。 新しいテーブルを使わなくてもいろいろ方法があるのですね。 大変勉強になりました。
- mshr1962
- ベストアンサー率39% (7417/18945)
品名だけでいいなら 「データ」「入力規則」「設定」で 入力値の種類を「リスト」 元の値に「ガム,チョコ,クッキー,・・・」 と設定してみてください。 そのセルを選択すると右に[▼]ボタンがでて、これを押すと元の値が表示されます。 元の値はセル参照も可能です。 同シート内なら「=$Z$1:$Z$100」 別シートなら「挿入」「名前」「定義」でその範囲に名前を付けて、 「=範囲名」 で参照できます。
お礼
ありがとうございました。 が、せっかくですが今回私が知りたい方法とは違うようですが? それとも私の(回答の)理解不足でしょうか?
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/367)
品名が10種類では if では出来ません。 VLOOKUP を使うのが妥当と思います。
お礼
ありがとうございました。 そうですね。IFは4つ?まででしたね。 VLOOKUPは苦手でまだうまくいきませんががんばってみます。
お礼
ありがとうございました。 今回は別テーブルを作る形でようやくできましたが、紹介してくださった2番目の方法もうまくいきました。 テーブルを作れないときに使ってみます。 (1番目の方法はちょっとむずかしすぎて・・・)