office 2010 の excel
LOOKUP
これはそもそも、ダメ。日本語が混った時とか。
=lookup("あ",{"foo","bar"},{1,2})
これで、#N/A とならず、 2 となる。
そもそも学校の先生の点数範囲でランク付けとか、そこらで使うっぽい。
choose & match
=choose(match("あ",{"foo","bar"},0),1,2)
これは、完全一致が保証
んで。
複数条件の完全一致で、文字列を返す時とか。
val は uniq だとして。
key1 | key2 | key3 | val |
---|---|---|---|
foo | bar | buz | 1 |
bar | buz | foo | 2 |
buz | foo | bar | 3 |
の判定表の元
A1 | B1 | C1 | D1 |
---|---|---|---|
foo | bar | bar | |
bar | buz | bar | |
buz | foo | bar |
を判定させたい場合
=CHOOSE(MATCH(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),0,−3)&OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),0,−2)&OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),0,-1),{"foobarbuz","barbuzfoo","buzfoobar"},0),1,2,3)
を、D2D3D4にペーストすればいい。存在しないものは、きちんと #N/A になってくれる。
INDIRECT(ADDRESS(ROW(),COLUMN())
は自身のアドレスの参照を取得。なぜ参照かと言うと OFFSET が参照を要求するから。
で、
OFFSET(ADDR,0,-3)
は ADDR から三つ左隣りのデータを取得。で、&
で連結して検索文字列作成。と。
もちろん上記では、例えば 1,12,1 と11,2,1 がマッチしてしまうので、必要があれば、それなりのセパレータを挟んでやる必要有り。