Home

関数のトラブル

ExcelとCalcの関数の互換性について、3ページに分けて解説しています。このページには、共通している関数をめぐるトラブルをまとめてあります。ExcelまたはCalcの片方にしか存在しない関数については、それぞれのページに切り替えてください。 なお、「Unix User誌の記事」のページにも情報があります。

互換性のある関数 * Calcに存在しない関数 * Excelに存在しない関数 


索引

引数の区切り記号についての注意

関数のネストについての注意

IF関数

INDIRECT関数

INDEX関数

COUNT関数

COUNTBLANK関数

AVERAGEA関数

SQRT関数

TRIM関数

TYPE関数

EOMONTH関数

同じ関数で別表記(CONVERT/EUROCONVERT/ERROR_TYPE/EFFECT/DPRODUCT)

DATEDIF関数(Excel)とDAYS関数・MONTHS関数・YEARS関数(Calc)

Top  Home

引数の区切り記号についての注意

関数は、関数名と引数の2つの部分で構成されます。引数は括弧 ( ) で囲み関数名のすぐあとに記入します。2つ以上のの引数を指定するときはセミコロン ; で区切ります。たとえば次のように記入します。

=ROUND(A1;2)

Excelの関数は、複数の引数を入力するときの区切り記号がカンマです。それに対してCalcの関数は、区切り記号はセミコロンです。この違いに気をつけてください。Excelのつもりでカンマを使ってしまうと、エラーとなってしまします。

ちなみに、設定できる引数は最大30個までです。この制限はExcelもCalcも同じです。

Top  Home

関数のネストについての注意

関数の引数に‘関数を使った数式’を入力することができます。つまり、関数の中で関数を使うことができるわけです。これを関数のネストと呼びます。

Excelの数式に入力できる関数は、7レベルまでネストに限られます。それに対してCalcの数式ではそのような制限はありません。Calcのマニュアルには関数ネストの制限についての記載がないので上限は不明ですが、私が試した範囲では30レベル以上の関数のネストを含めることが可能です。

ちなみに、Excelで7レベルを超えた関数のネストが必要なときは、途中までの経過をいったん別セルに書き出してそのセルを参照するか、または数式に名前を付けることによって制限を回避することが可能です。

Top  Home

IF関数

IF関数は、論理式の結果に応じて処理を切り替える関数です。

ExcelのIF関数は配列数式として使うことができますが、CalcのIF関数は配列数式として使うことはできません。

→ 具体例を参照する

Top  Home

INDIRECT関数

INDIRECT関数は、数式の中で使用する参照を、別のセルに入力した文字データで間接的に指定するための関数です。

ExcelのINDIRECT関数では、引数で指定したセルに入力できるのは「セル参照」または「範囲名」となっています。それに対してCalcのINDIRECT関数では、引数で与えるセルに入力できるのは、「セル参照」に限られます。
→ 具体例を参照する(Q&A)

また、このセル参照の形式は、「A1」形式のセル番地に限ります。「R1C1」形式のセル番地を指定することはできません。
(注)R1C1形式のセル番地は表計算ソフトのMultiplanと互換性があります。

Top  Home

INDEX関数

INDEX関数は、行番号と列番号で指定したセルの内容を返します。

ExcelのINDEX関数には、「セル範囲形式」と「配列形式」の2つの書式があります。Calc のINDEX関数は、「セル範囲形式」の書式に限られます。

Top  Home

COUNT関数

COUNT関数は、数値が入力されたセルの個数を返します。

このとき、論理値(TRUEとFALSE)とエラー値の取り扱いがExcelとCalcとで異なります。論理値に関しては、Calcはカウントしますが、Excelはカウントしません。エラー値に関しては、Excelはエラー値を除外して数値セルの個数をカウントしますが、Calcではエラー値が含まれているとCOUNT関数の結果もエラーとなります。

→ 具体例を参照する

Top  Home

COUNTBLANK関数

COUNTBLANK関数は、指定した範囲内の空白セルの数を数えます。

このとき、空白文字列が入力されているセル(「=""」の記入されているセル)の取り扱いが異なります。Excelでは、「=""」の入力されているセルをカウントしませんが、Calcでは「=""」の入力されているセルを空白セルとしてカウントします。

→ 具体例を参照する

Top  Home

AVERAGEA関数

指定範囲内の数値の平均を求めます。このとき、空白セルは計算から除外し、数値の0が入力されているセルは計算に含めます。文字列の入力されているセルは0と見なして計算に含めます。

ExcelとCalcとで、空白文字列が入力されているセル(「=""」の記入されているセル)の取り扱いが異なります。Excelでは、「=""」の入力されているセルは文字列として計算に含め0として扱います。それに対してCalcでは、「=""」の入力されているセルを空白セルとして扱い計算に含めません。

→ 具体例を参照する

Top  Home

SQRT関数

SQRT関数は、 正の平方根を返す関数です。Calcでは、この関数は配列数式には対応していません。同じような関数でもCalcのPOWER関数(数値のべき乗を返す)は配列数式に対応しています。Excelの場合には、このどちらの関数も配列数式として使えます。

→ 具体例を参照する

このような関数は他にもあると思われます。お気づきの方は、このサイトの管理者までお知らせいただければ幸いです。サイトの管理者あてのメールは、右下のHomeボタンをクリックし、トップページの送信フォームをご利用ください。

Top  Home

TRIM関数

TRIM関数は、文字列に含まれる不要なスペースを除外します。

ExcelのTRIM関数は全角のスペースも含めて不要なスペースを検索しますが、CalcのTRIM関数は半角のスペースだけを対象として検索します(Calcでは全角のスペースは文字列として取り扱います)。

Top  Home

TYPE関数

TYPE関数は、セルに入力されているデータの型を調べる関数です。

ExcelのTYPE関数は数式の結果として表示されているデータの型を返します。それに対してCalcのTYPE関数は、セルの内容が数式のときは「数式(8)」の戻り値を返します。ExcelのTYPE関数を使ってセルに数式が入力されているかどうかを調べることはできません。逆にCalcのTYPE関数を使って数式セルの表示値を調べることはできません。

Top  Home

EOMONTH関数

EOMONTH関数は、月末の日付を型を調べる関数です。Excelでは「分析ツール」などのアドインが組み込まれているときに利用することができます。この関数は、私の環境では、Excel→Calcの一方通行の互換性となっています。

CalcでEOMONTH関数を設定した表計算ドキュメントを作成してExcelのブック形式で保存したものを、Excelで開くと「MONOTSEND」という関数名に置き換わってしまいます。その結果、数式は機能しません。ただし、このExcel形式のファイルをCalcで開くと、「EOMONTH」と表示され、正しくEOMONTH関数として機能します。

ExcelでEOMONTH関数を設定したワークシートをCalcで開くと、そのままEOMONTH関数として正しく機能します。

Top  Home

同じ関数で別表記

Top  Home

DATEDIF関数(Excel)とDAYS関数・MONTHS関数・YEARS関数(Calc)

ExcelのDATEDIF関数は、開始日と終了日を指定して、その期間内の日数(d)、満月数(m)、または満年数(y)を返します。この関数はLotus1-2-3との互換性を保つために用意されている関数です。そのため、Excelの「関数の入力」ダイアログの一覧からは入力できませんので注意してください。

Excelで、この関数を使って、1977年3月18日生まれの人の満年齢を計算する数式は、次のようになります。

=DATEDIF("1977/3/18",TODAY(),"y")

この関数に相当する関数は、Calcにはありません。しかし、機能的に同じ内容をもつ関数が用意されています。DAYS関数・MONTHS関数・YEARS関数です。

たとえば、CalcでYEARS関数を使って1977年3月18日生まれの人の満年齢を計算する数式は、次のようになります。

=YEARS("1977/3/18";TODAY();0)

このYEARS関数の3番目の引数は、「0」を指定すると満年数で、「1」を指定すると暦の年が変わった時点で1年として計算します。

Top  Home


制作者:松井幹彦

更新日: ,2005/03/13 15:12