=Func(A1, "Alex, "Betty", "Charlie")
一致したエントリのインデックスを返す関数が必要です。この関数をB1:B13に配置すると、次のように表示されます。
"Charlie" 3
"Alex" 1
"Alex" 1
"Alex" 1
"Charlie" 3
"Charlie" 3
"Betty" 2
"Charlie" 3
"Charlie" 3
"Betty" 2
"Betty" 2
"Betty" 2
"Alex" 1
一見すると CHOOSE がこれを行うと思いましたが、これは整数に基づく参照を返すので、必要なものとは逆になります。
私が見逃した、これを実行する既存の関数はありますか? ネストされた if や vlookup など、より複雑な関数を作成する必要がありますか? または、VBA で関数を記述する必要がありますか?
お時間を割いてご協力いただきありがとうございました。
答え1
比較する値をスプレッドシート内の別の範囲に配置できる場合は、LOOKUP 関数を使用できます。LOOKUP は、2 番目の引数で指定された範囲内で最初の引数を検索し、3 番目の引数の範囲から対応する値を返します。必要な値を指定する範囲を追加する必要があります。
たとえば、F1:F3 と G1:G3 にルックアップ テーブルを作成します。
FG 1 アレックス 1 2 ベティ 2 3 チャーリー 3
使用する関数は
B 1 =LOOKUP(A1,$F$1:$F$3,$G$1:$G$3) 2 =LOOKUP(A2,$F$1:$F$3,$G$1:$G$3)
セル B1 では、LOOKUP は A1 ("Charlie") を検索し、それを F3 で見つけ、G3 から値 3 を返します。セル B2 では、LOOKUP は A2 ("Alex") を検索し、それを F1 で見つけ、G1 から値 1 を返します。
メイン シートにルックアップ テーブルを配置したくない場合は、ワークブック内の別のシートにルックアップ テーブルを配置することもできます。
答え2
ソース データがどのようになっているかは 100% わかりませんが、MATCH 関数は単一の値を調べて、配列内のその位置を返します。
A1:A4が
Alex
Betty
Charlie
Betty
そしてB1には
=MATCH(A1,$A$1:$A$4)
B1が戻ってくる
1
次に、B1 から B4 までを入力するだけで結果が得られます。