似ているようで似ていなくて高性能なCalcのVLOOKUP

 

諸般の事情でOOoを使っているのですが一番戸惑ったのがVLOOKUP

f:id:Pasirin:20120514232749j:plain

これはExcel2010のスクショですが

前提条件として

リスト(検索するソース)はソートされていることで

で「検索方法」はTRUEかFALSEで近似値か完全一致を決めてます

まぁ検索がやりやすくなりますし

 

でOOoやLibreOfficeではどうかというと

f:id:Pasirin:20120514232741j:plain

凄くメニューが似てるわけですが

TRUEの場合はリスト(検索するソース)はソート必須

FALSEの場合はソート不要

で前者が二分探索で早いけど後者は遅いよって差にしか感じられないわけですが

 

どうも動きがおかしいと思ったら

既に調べてくれてた人が居るんですね

http://oji3.dtiblog.com/blog-entry-750.html

 

でヘルプを読むと最後の値は

 

並べ替え順序 は、行列の最初の列を昇順で並べ替えるかどうかを示すオプションのパラメータです。最初の列を昇順で並べ替えない場合は、ブール値の FALSE またはゼロを入力します。並べ替えた列はより一層高速に検索でき、並べ替えたリストの最小値と最大値の間にある場合は、検索値が完全に一致しなかったときでも、関数が値を返します。並べ替えていないリストでは、検索値は完全に一致する必要があります。そのほかの場合、関数は、Error: Value Not Available というメッセージを返します。

 

いやいやいや、どこにも近似値を返すなんて書いてないじゃん

ヘルプには書いてあるけどね

関数が値を返しますって、どんな基準かもわかりにくく・・・

一応これは近似値みたいですね

 

並べ替えていないリストでは、検索値は完全に一致する必要があります

はfalseについて書いてるんだよね?

 

わかりにくい・・・Excelと一緒じゃ不味いのか?ここまで似せておいて

 

まとめ

Excelはリストのソート必須

Calcはリストのソートは近似値を求める場合は必須、で動きは二分探索で速い


完全一致を求める場合は

Excelはソートしているからどっちでも二分探索だから早い
Calcはソート不要の為検索が遅くなる

 

なんでこんなことに・・・

漏れは完全一致しかほぼ使わないので近似値で早いのは不要なんだよねぇ

 

まぁわかったことはExcelと一緒でfalseしか使わないなって事で

 

フィードバックしたら変わるのかな?

どうやったらいいのだ?

 

まぁフィードバックしたところで漏れの環境は改善しないんだがね