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

解決済みの質問

二つの条件を満たす関数

資格を縦行、成績ランクを横列から交差する場所の値を出すような関数はありませんでしょうか?
実際は、

    A   B    C   D

部長 100000 80000  60000  50000 

次長  80000 60000 50000 40000

課長  50000 40000 20000 10000

 
こんな感じのテーブルになるのですが(表は、9行4列になります。)

資格が次長でランクがBの場合、60000になるわけです。
これを関数で導きたいのです。
HLOOKUPとIF文でやろうとしたのですがIFは7つ以上は繰り返せないようで
エラーになってしまいます。宜しくお願いいたします。
EXCELは2000です。

投稿日時 - 2005-03-14 09:57:50

QNo.1268269

すぐに回答ほしいです

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

テーブルがA1:E9にあるとして、以下の方法で検索できると思います。(EXCEL2002で検証)

=INDEX(A1:E9,MATCH("部長",A1:A9,0),MATCH("A",A1:E1,0))

投稿日時 - 2005-03-14 11:27:54

お礼

ありがとうございます。
答えはひとつではなかったんですね。
INDEX関数、不勉強でした。
MATCH関数・・・わかってたつもりでわかってなかったようです。
NO1の方の回答とあわせ使いやすいほうを利用させていただきます。これでなんとか考課処理できそうです。
ありがとうございました。

投稿日時 - 2005-03-14 12:37:06

ANo.2

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

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

回答(4)

ANo.4

#1 Wizard_Zeroです。

+1について。

VLookup関数では、3番目の引数「どの列を参照するか」で1を指定すると、検索列(つまり一番左の役職リスト)になってしまうので、Aランク~Dランク(B列~E列)にするには2~5にしなければなりません。今回、Match関数はB~E列を検索範囲にしているので、返される結果は1~4。ですので+1にしています。Match関数の検索範囲をA1:E1とした場合、+1は不要です。

ただ、VLookup使うより、#2さんのIndex関数の方が、検索方法の原理が分かりやすいと思います。(他の人が関数を見た場合とか)
正直、#2さんの回答見て「その手があったか!」って思いました。(*^.^*)

投稿日時 - 2005-03-14 13:40:52

お礼

補足ありがとうございました。
123は原則禁止となってしまったので大変助かりました。

投稿日時 - 2005-03-16 12:52:32

ANo.3

テーブルがA1:E9にあるとして、以下の方法で検索できると思います。(EXCEL2002で検証)

=INDEX(A1:E9,MATCH("次長",A1:A9,0),MATCH("B",A1:E1,0))

投稿日時 - 2005-03-14 11:29:08

ANo.1

Wizard_Zeroと申します。

VLookupとMatchの組み合わせでできると思います。
テーブルのアドレスを「A1:E9」、資格の役職入力欄を「A11」、ランク入力欄を「B11」と仮定します。

=VLOOKUP(A11,A1:E9, MATCH(B11,B1:E1,FALSE) + 1, FALSE)

Excel2003で検証しました。
多分、こういうことだと思うのですが、はずしてたらすみません。(もっと簡単な方法があるかも...)

投稿日時 - 2005-03-14 11:13:09

お礼

ありがとうございます。できました。
MATCH関数・・・わかってたつもりでわかってなかったようです。
実は、これまでこのファイルは、ロータス123だったんですが事情があってEXCELになりました。ロータスとEXCELではサポートする関数が違って困っていました。
ありがとうございました。
ところで”+1”とありますがなぜでしょう?

投稿日時 - 2005-03-14 12:30:18

あなたにオススメの質問