Ubuntu Weekly Recipe

第438回LibreOffice 5.2 CalcとMicrosoft Excel 2016の関数

今回はLibreOffice 5.2 CalcとMicrosoft Excel 2016の関数について、対応しているもの、していないものなどを詳細に確認していきます。

関数名の互換率は95%

LibreOffice 5.2 Calc(以下Calc)と、Microsoft Excel 2016(以下Excel)で、一致した関数のパーセントを計算すると、95%と出ました。厳密には関数名が同じでも互換性がない(使い方が異なる)ものもありますし、関数名が違っていても互換性がある(使い方が同じ)ものもありますので、実際はもう少し高い比率になることでしょう。

ちなみに5.1と比較すると93%、Apache OpenOffice 4.1.2(以下AOO)と比較すると79%でした。

なおExcelは同じ2016でも、市販のバージョンとサブスクリプションのバージョンで対応している関数の数が違うそうです。詳しくはMicrosoftのOffice Blogsをご覧ください。今回はこの6つの関数も含んで検証しています。結論から述べると、Calcはこのうちすべての関数に対応しています。ということは、この点においては市販のExcelよりも互換性が高いという奇妙なことになっています。そして実際に検証していくと奇妙なことはほかにもあったりします。具体的に見ていきましょう。

今回使用するLibreOffice

今回紹介するLibreOfficeは、第434回で取り上げたPPAからインストールしています。執筆段階で5.2.1としてリリースされたバージョンです。LibreOfficeはリリース後に関数を追加することはないので、5.2.xであれば同じであるはずです。

Excel関数の参考書籍

筆者は特にCalcに関する専門的な知識があるわけではなく、また最新のExcelも所有していないので[1]⁠、書籍を参考にしました。『今すぐ使えるかんたんmini Excel 全関数事典 ⁠Excel 2016/2013/2010/2007対応版⁠⁠』とその前の版の『今すぐ使えるかんたんmini Excel 関数小事典 ⁠Excel 2010/2007/2003 /2002/2000 対応⁠⁠』です。いずれも技術評論社刊で、オススメです。

Excelの関数は全部で476個としていますが、これは前者の表紙に書いてある個数を参考にしました。

関数の区切り

基本的なことではありますが、AOO(とその前身であるOpenOffice.org)では関数の区切りは";"でした。しかし、LibreOfficeでは","がデフォルトです。この文字は変更することもできます図1⁠。

図1 関数の区切りは、⁠ツール⁠⁠-⁠オプション⁠⁠-⁠LibreOffice Calc⁠⁠-⁠数式]で変更できる
画像

Excel 2010以降でCalcが対応している関数

AOOはExcel 2007の関数には概ね対応していることがわかりました。そこで、Excel 2010以降に追加された関数のうち、Calcでは対応していて、AOOでは対応していないものを次の表に挙げました。全部で79個ありました。LibreOfficeが活発に開発されていることがあらためてよくわかります。

関数名 Excelの対応バージョン
BETA.DIST 2010
BETA.INV 2010
BINOM.DIST 2010
BINOM.INV 2010
BITAND 2013
BITLSHIFT 2013
BITOR 2013
BITRSHIFT 2013
BITXOR 2013
CEILING.MATH 2013
CEILING.PRECISE 2010
CHISQ.DIST 2010
CHISQ.DIST.RT 2010
CHISQ.INV 2010
CHISQ.INV.RT 2010
CHISQ.TEST 2010
CONCAT 2016
CONFIDENCE.NORM 2010
CONFIDENCE.T 2010
COVARIANCE.P 2010
COVARIANCE.S 2010
ENCODEURL 2013
ERF.PRECISE 2010
ERFC.PRECISE 2010
EXPON.DIST 2010
F.DIST 2010
F.DIST.RT 2010
F.INV 2010
F.INV.RT 2010
F.TEST 2010
FILTERXML 2013
FLOOR.MATH 2013
FLOOR.PRECISE 2010
FORECAST.ETS.SEASONALITY 2016
FORECAST.LINEAR 2016
GAMMA.DIST 2010
GAMMA.INV 2010
GAMMALN.PRECIS 2010
HYPGEOM.DIST 2010
IFNA 2013
IFS 2016
関数名 Excelの対応バージョン
ISOWEEKNUM 2013
LOGNORM.DIST 2010
LOGNORM.INV 2010
MAXIFS 2016
MINIFS 2016
MODE.MULT 2010
MODE.SNGL 2010
NEGBINOM.DIST 2010
NETWORKDAYS.INTL 2010
NORM.DIST 2010
NORM.S.DIST 2010
NORM.S.INV 2010
NUMBERVALUE 2013
PERCENTILE.EXC 2010
PERCENTILE.INC 2010
PERCENTRANK.EXC 2010
PERCENTRANK.INC 2010
POISSON.DIST 2010
QUARTILE.EXC 2010
QUARTILE.INC 2010
RANK.AVG 2010
RANK.EQ 2010
STDEV.P 2010
STDEV.S 2010
SWITCH 2016
T.DIST 2010
T.DIST.2T 2010
T.DIST.RT 2010
T.INV 2010
T.INV.2T 2010
T.TEST 2010
TEXTJOIN 2016
VAR.P 2010
VAR.S 2010
WEBSERVICE 2013
WEIBULL.DIST 2010
WORKDAY.INTL 2010
Z.TEST 2010

Excelにあり、Calcにない関数

次に、Excelにあり、Calcでは対応していない関数を次の表に挙げました。23個ありました。対応バージョンが空の関数は、Excel 2007以前からExcelに備わっていることを示しています。

関数名 Excelの対応バージョン 備考
BINOM.DIST.RANGE 2013 CalcのB関数
CUBEKPIMEMBER Microsoft SQLサーバー用
CUBEMEMBER Microsoft SQLサーバー用
CUBEMEMBERPROPERTY Microsoft SQLサーバー用
CUBERANKEDMEMBER Microsoft SQLサーバー用
CUBESET Microsoft SQLサーバー用
CUBESETCOUNT Microsoft SQLサーバー用
CUBEVALUE Microsoft SQLサーバー用
DATESTRING 日本向け
EFFECT CalcのEFFECTIVE関数
FINDB
FORECAST.ETS 2016
FORECAST.ETS.CONFINT 2016
FORECAST.ETS.STAT 2016
FORMULATEXT 2013 CalcのFORMULA関数
NUMBERSTRING 日本向け
PDURATION 2013 CalcのDURATION関数
PHONETIC 日本向け
REPLACEB
RTD
SEARCHB
SKEW.P CalcのSKEWP関数
YEN 日本向け

FORECASTなんとか関数は、関数名は違いますがExcel形式のファイルをインポート/エクスポートするとうまく扱ってくれるので、互換性の上では問題ありません。

こうして見ると、日本以外では対応していなくて困る関数はほぼないと言っていいのが現状です。DATESTRING関数(西暦和暦変換)はとても便利そうです。NUMBERSTRING関数(漢数字変換)とPHONETIC関数(ふりがなを振る)は実装は難しそうですが、YEN関数(円マークをつけて整形する)はそうでもなさそうなので、このあたりは開発を始める狙い目かもしれません。

List of Spreadsheet Functions Currently Not Supported in LOも参考になります。もっとも、こちらはApple Numbersの情報が多いのですが。

Excel 2013でサポートされたCalcの関数

今回調査していて、AOOで対応しているExcel 2013の関数があることに気づきました。おそらくですがCalcとの互換性を高めるために実装されたのだと思います。少し調べた限りでは使い方も同じでした。AOOはExcel 2010と2016で新しく追加された関数には全く対応していませんが、2013で新しく追加された関数には対応しているという奇妙なことになっています。

関数名
ACOT GAUSS PERMUTATIONA
ACOTH IMCOSH PHI
ARABIC IMCOT RRI
BASE IMCSC SEC
COMBINA IMCSCH SECH
COT IMSEC SHEET
COTH IMSINH SHEETS
CSC IMTAN UNICHAR
CSCH ISFORMULA UNICODE
GAMMA MUNIT XOR

Calc独自の関数

最後に、Calc独自の関数はどのくらいあるのかを調査しました。結果は、次の表のとおりです(FORECASTなんとか関数に関しては説明を省略しています⁠⁠。

こうして見るとExcelとの互換性を確保するための関数がほとんどで、あとは過去のCalcとの互換性のために残っているものが多く、本当に独自のものはあまりないことに気づきます。可能な限りメニューやヘルプやソースコードを確認して正確を期したつもりですが、誤りや抜けがあるかもしれません。

関数名 備考
B ExcelのBINOM.DIST.RANGE関数
CEILING.XCL ExcelのCEILING関数
CHISQDIST CHISQ.DISTと同じ
CHISQINV CHISQ.INVと同じ
COLOR
CONVERT_ADD Excel 2003のCONVERT関数
CUMIPMT_ADD Excel 2003のCUMIPMT関数
CUMPRINC_ADD Excel 2003のCUMPRINC関数
CURRENT
DAYSINMANTH
DAYSINYEAR
DDE
DURATION_ADD Excel 2003のDURATION関数
EASTERSNDAY
EFFECT_ADD Excel 2003のEFFECT関数
EFFECTIVE ExcelのEFFECT関数
ERRORTYPE (ERROR.TYPEとは完全に別)
EUROCONVERT
FLOOR.XCL Excel 2007以前のFLOOR関数
FORECASTS.ETS.ADD
FORECASTS.ETS.MULTI
FORECASTS.ETS.PI.ADD
FORECASTS.ETS.PI.MULTI
FORECAST.ETS.STAT.ADD
FORECAST.ETS.STAT.MULTI
FORMULA ExcelのFORMULATEXT関数
GCD.EXCEL2003 AOOのGCD_ADD関数
ISEVEN_ADD ExcelのISEVEN関数
ISLEAPYEAR
ISODD_ADD ExcelのISODD関数
LCM_EXCEL2003 AOOのLCM_ADD関数
MONTHS
NETWORKDAYS_2003 Excel 2003のNETWORKDAYS関数
NOMINAL_ADD ExcelのNOMINAL関数
OPT_BARRIER
OPT_PROB_HIT
OPT_PROB_INMONEY
OPT_TOUCH
RAWSUBSTRACT
ROT13
SKEWP ExcelのSKEW.P関数
WEEKNUM_EXCEL2003 AOOのWEEKNUM_ADD関数
WEEKS
WEEKSINYEAR
YEARS

おすすめ記事

記事・ニュース一覧