似ているようで似ていなくて高性能なCalcのVLOOKUP
諸般の事情でOOoを使っているのですが一番戸惑ったのがVLOOKUP
これはExcel2010のスクショですが
前提条件として
リスト(検索するソース)はソートされていることで
で「検索方法」はTRUEかFALSEで近似値か完全一致を決めてます
まぁ検索がやりやすくなりますし
でOOoやLibreOfficeではどうかというと
凄くメニューが似てるわけですが
TRUEの場合はリスト(検索するソース)はソート必須
FALSEの場合はソート不要
で前者が二分探索で早いけど後者は遅いよって差にしか感じられないわけですが
どうも動きがおかしいと思ったら
既に調べてくれてた人が居るんですね
http://oji3.dtiblog.com/blog-entry-750.html
でヘルプを読むと最後の値は
並べ替え順序 は、行列の最初の列を昇順で並べ替えるかどうかを示すオプションのパラメータです。最初の列を昇順で並べ替えない場合は、ブール値の FALSE またはゼロを入力します。並べ替えた列はより一層高速に検索でき、並べ替えたリストの最小値と最大値の間にある場合は、検索値が完全に一致しなかったときでも、関数が値を返します。並べ替えていないリストでは、検索値は完全に一致する必要があります。そのほかの場合、関数は、Error: Value Not Available というメッセージを返します。
いやいやいや、どこにも近似値を返すなんて書いてないじゃん
ヘルプには書いてあるけどね
関数が値を返しますって、どんな基準かもわかりにくく・・・
一応これは近似値みたいですね
並べ替えていないリストでは、検索値は完全に一致する必要があります
はfalseについて書いてるんだよね?
わかりにくい・・・Excelと一緒じゃ不味いのか?ここまで似せておいて
まとめ
Excelはリストのソート必須
Calcはリストのソートは近似値を求める場合は必須、で動きは二分探索で速い
完全一致を求める場合は
Excelはソートしているからどっちでも二分探索だから早い
Calcはソート不要の為検索が遅くなる
なんでこんなことに・・・
漏れは完全一致しかほぼ使わないので近似値で早いのは不要なんだよねぇ
まぁわかったことはExcelと一緒でfalseしか使わないなって事で
フィードバックしたら変わるのかな?
どうやったらいいのだ?
まぁフィードバックしたところで漏れの環境は改善しないんだがね