先週、絶対一致検索にアイテムアクセスが使えることを書いたけど、それなら近似値検索(近似一致検索)がしたい時はどうするのかという話に当然なるかと思う。
数式でやるなら簡単で、画像のような採点表がある場合、同じテーブルに「評価」列を作って、
=LOOKUP([@点数],採点基準[点数(から)],採点基準[評価]) もしくは =XLOOKUP([@点数],採点基準[点数(まで)],採点基準[評価],"",1)
こんな感じで計算できる。
これをクエリで計算しようと思ったら一工夫が必要になる。「採点基準」「点数表」テーブルから、それぞれクエリを作成しているものとして、
評価列の追加 = Table.AddColumn(点数表, "評価", each [
点数 = [点数],
行の抽出 = Table.FirstN(採点基準, each [#"点数(から)"]<=点数),
評価 = List.Reverse(行の抽出[評価]){0}
][評価], type text),
列の選択 = Table.SelectColumns(評価列の追加,{"氏名", "評価"})
in
列の選択
こんな形で計算できる。採点基準テーブルの並びによっては「List.Reverse(リスト反転)」は必要ない。「Table.SelectRows」だとデータをいちいち読み込んで重くなるので、「Table.FirstN」を使うのがお勧め。
個人的にレコードを使うのが好きなだけで、「let~in」を使ってもカスタム関数を使っても特に問題はない。