Google DocsのSpreadsheetがおもしろいです。
あ、「ヤバイ」はほめ言葉としての意味です。
目指す方向性が違いますから、現在のExcelと比較することはあまり意味がありませんが、とりあえず、実装しているワークシート関数を比較してみました。
まず、Excel 2007にはあるけど、Google Spreadsheetにはない関数です。
| AMORDEGRC | CUBESETCOUNT | GAMMALN | NUMBERSTRING | | AMORLINC | CUBEVALUE | GESTEP | ODDFPRICE | | AREAS | DATEDIF | GETPIVOTDATA | ODDFYIELD | | ASC | DAVERAGE | IMABS | ODDLPRICE | | AVERAGEIF | DBCS | IMAGINARY | ODDLYIELD | | AVERAGEIFS | DCOUNT | IMARGUMENT | PHONETIC | | BAHTTEXT | DCOUNTA | IMCONJUGATE | REGISTER.ID | | BESSELI | DELTA | IMCOS | REPLACEB | | BESSELJ | DGET | IMDIV | RIGHTB | | BESSELK | DMAX | IMEXP | ROMAN | | BESSELY | DMIN | IMLN | RTD | | BETADIST | DPRODUCT | IMLOG10 | SEARCHB | | BETAINV | DSTDEV | IMLOG2 | SQL.REQUEST | | CALL | DSTDEVP | IMPOWER | SUBTOTAL | | CELL | DSUM | IMPRODUCT | SUMIFS | | CHIDIST | DVAR | IMREAL | TDIST | | CHIINV | DVARP | IMSIN | TIMEVALUE | | CHITEST | ERF | IMSQRT | TINV | | CLEAN | ERFC | IMSUB | TTEST | | COMPLEX | EUROCONVERT | IMSUM | TYPE | | CONVERT | EVALUATE | INFO | VDB | | COUNTIFS | FDIST | ISPMT | WEEKNUM | | CUBEKPIMEMBER | FINDB | JIS | YEN | | CUBEMEMBER | FINV | LEFTB | YIELDMAT | | CUBEMEMBERPROPERTY | FTEST | LENB | | | CUBERANKEDMEMBER | GAMMADIST | LOOKUP | | | CUBESET | GAMMAINV | MIDB | |
|
誰も使わないような関数はともかく、よく使う関数では
・全角の文字列を半角にするASC関数や、半角→全角にするJIS関数はない
・Excel 2007で追加された次の関数はない
AVERAGEIF
AVERAGEIFS
COUNTIFS
SUMIFS
ただし、IFERROR関数はある
・ちょっと特殊なCELL関数、EVALUATE関数、INFO関数、TYPE関数はない
・Excelの隠し関数
DATEDIF
NUMBERSTRING
はない
・DSUM関数やDAVERAGE関数など、いわゆるD関数(データベース関数)はない
・FINDB関数など、バイナリを扱う「〜B関数」はない
・ピボットテーブルがないのだから、当然GETPIVOTDATA関数もない
・ふりがな機能がないのだから、当然PHONETIC関数もない
・LOOKUP関数がないのは、ちょっと悲しい
・SUBTOTAL関数もないのか
・DATEVALUE関数はあるけど、TIMEVALUE関数はない
・WEEKNUM関数はない
・YEN関数もない。なくていいけど
実害はありませんね。普通に使う分には「関数がなくて困る」ということはないでしょう。できれば、LOOKUP関数は欲しかったけど。
逆に、Google Spreadsheetにはあるけど、Excelにはない関数は次の通り。
| ADD | FILTER | | CONCAT | SORT | | DIVIDE | SPLIT | | EQ | UNIQUE | | GT | GoogleFinance | | GTE | GoogleLookup | | LT | ImportData | | LTE | ImportFeed | | MINUS | ImportHtml | | MULTIPLY | ImportRange | | NE | ImportXML | | POW | |
|
表の左列にあるのは、+や/などの演算子と同じ働きをする関数です。
演算子があるから、普通は使わないでしょう。
右列にある関数に注目したいですね。
「Google〜」や「Import〜」は、インターネットならではの特殊な関数です。
これについては、あらためてじっくり紹介しますが、まずは
FILTER関数
SORT関数
SPLIT関数
UNIQUE関数
です。こいつらが、実におもしろいです。正直、次のExcelにも実装して欲しいですね。
まず、FILTER関数から。
こいつは、リストを条件で絞り込んだ結果を返す関数です。絞り込んだ件数じゃありません。絞り込んだ結果のリストを返します。
たとえば、下図のようなリストがあったとします。
このリストを「数値が10より大きい」という条件で絞り込んでみます。セルD3に「=FILTER(A2:A13,B2:B13>19)」という式を入力します。
Enterキーを押して確定すると
と、なります。なんと、式を入れなかったセル範囲D3:D7にもデータが表示されます。Excelでも配列を返す関数などを使ったとき似たような結果を得ることができますが、それにしても入力時にはあらかじめセル範囲を選択しておかなければなりません。でも、FILTER関数は結果が何件になるか入れてみなければわかりませんので、それは無理ですね。
で、おもしろいのが、勝手にデータが表示されたセル範囲D3:D7です。実は、これらのセルには自動的に別の関数が入力されています。
「CONTINUE(D2,6,1)」というような関数です。Spreadsheetの関数一覧には記載されていない関数ですから、おそらくSpreadsheetが勝手に入れてくれる関数でしょう。もちろん、ユーザーが手入力して使うことも可能です。ExcelでいうとSUBTOTAL関数みたいなものかな。
CONTINUEという名前と引数から想像すると「セルD2に入力した数式の結果を6行×1列に拡張して表示せよ」的な関数なんでしょうね。この状態で、たとえば、B列のデータを編集したとします。セルB3を削除すると、
このように、ちゃんと反映されます。もっともCONTINUE関数が「CONTINUE(D2,6,1)」と、結果を返すセル数を固定していますので、最後の「該当なし」のセルは「--」となります。では、FILTER関数の条件に設定した「B2:B13>19」に一致するデータが増えた場合はどうでしょう。

↓
と、今度はちゃんとCONTINUE関数が拡張されます。う〜ん、Excelでは経験したことのない結果なので少し違和感もありますが、なかなか賢いです。
もちろん、複数の条件を指定することもできます。
今度は「数値(B列)が10より大きい」かつ「フラグ(C列)が"OK"」という条件です。すると、
ちゃんと絞り込んでくれます。ヘルプによると条件は30個まで指定できるようですね。数的には問題ないでしょう。
>If there are multiple conditions, then all must be true for the corresponding values in the source array to be returned.
ということですから、指定した複数の条件はAND(かつ)で判定されるようです。なお、第1引数に複数列を指定すれば複数列を返してくれます。
Excelでも工夫すれば同じことを実現できますが、それにしてもあらかじめ結果が表示されるであろうセルに数式を入れておかなければなりません。
他にもかなり便利な関数が実装されていますが、長くなったので今回はここまで。次回に続きます・・・