組込関数は 149 種です。名前と引数は Excel に準拠しています。
未登録の関数名を使うと #NAME? になります。独自の関数は追加できます
(カスタム関数)。
数学・三角
| 基本 | ABS SIGN INT TRUNC MOD POWER EXP SQRT PI |
| 対数 | LN LOG LOG10 |
| 丸め | ROUND ROUNDUP ROUNDDOWN CEILING FLOOR MROUND |
| 三角 | SIN COS TAN ASIN ACOS ATAN ATAN2 DEGREES RADIANS |
| 集計 | SUM SUMIF SUMIFS SUMPRODUCT SUMSQ PRODUCT |
| 乱数 | RAND RANDBETWEEN |
統計
| 代表値 | AVERAGE AVERAGEIF AVERAGEIFS MEDIAN MAX MIN |
| 個数 | COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS |
| 順位 | LARGE SMALL RANK PERCENTILE(.INC/.EXC) QUARTILE(.INC/.EXC) MODE(.SNGL) |
| ばらつき | STDEV(.S) STDEVP STDEV.P VAR(.S) VARP VAR.P |
| 非表示行を除く集計 | SUBTOTAL AGGREGATE |
STDEV.S / VAR.P のような Excel 2010 以降の綴りは、旧名(STDEV / VARP)と同じ関数です。
集計(SUBTOTAL / AGGREGATE)
フィルタや行の非表示と組み合わせて使う集計関数です。どちらもフィルタで消えた行は
常に除外し、自分の範囲に含まれる SUBTOTAL / AGGREGATE のセルも無視します
(小計を二重に数えないため)。
SUBTOTAL(集計方法, 範囲1, [範囲2], …)
AGGREGATE(集計方法, オプション, 範囲1, [範囲2], …)
AGGREGATE(集計方法, オプション, 配列, k) ← 14〜19
| 集計方法 | ||||
|---|---|---|---|---|
1 AVERAGE | 2 COUNT | 3 COUNTA | 4 MAX | 5 MIN |
6 PRODUCT | 7 STDEV | 8 STDEVP | 9 SUM | 10 VAR |
11 VARP | 12 MEDIAN※ | 13 MODE.SNGL※ | 14 LARGE※ | 15 SMALL※ |
16 PERCENTILE.INC※ | 17 QUARTILE.INC※ | 18 PERCENTILE.EXC※ | 19 QUARTILE.EXC※ |
※は AGGREGATE のみ。SUBTOTAL は 101〜111(=1〜11 に 100 を足した番号)を使うと、
手で非表示にした行も除外します。
AGGREGATE のオプションは次の組み合わせです。
| 入れ子の小計 | 非表示行 | エラー値 | |
|---|---|---|---|
| 0(既定) | 無視 | 数える | 数える |
| 1 | 無視 | 無視 | 数える |
| 2 | 無視 | 数える | 無視 |
| 3 | 無視 | 無視 | 無視 |
| 4 | 数える | 数える | 数える |
| 5 | 数える | 無視 | 数える |
| 6 | 数える | 数える | 無視 |
| 7 | 数える | 無視 | 無視 |
行の表示状態はセルの編集ではないため依存グラフには乗りません。フィルタの適用・
アウトラインの開閉・Undo のあとは自動で再計算され、行の手動非表示/再表示は
画面の再描画時に反映されます。ヘッドレスで行を隠した場合は
Worksheet.SyncAggregateFormulas() を呼んでください(変化が無ければ何もしません)。
論理
IF IFS IFERROR IFNA AND OR NOT XOR SWITCH TRUE FALSE
文字列
| 抽出 | LEFT RIGHT MID LEN |
| 検索 | FIND SEARCH EXACT |
| 変換 | UPPER LOWER PROPER TRIM VALUE TEXT N |
| 全角・半角 | JIS DBCS ASC |
| 結合・置換 | CONCAT CONCATENATE TEXTJOIN REPLACE SUBSTITUTE REPT |
| 文字コード | CHAR CODE |
FIND は大文字小文字を区別し、SEARCH は区別しません(Excel と同じ)。
JIS(=DBCS)は半角を全角に、ASC は全角を半角にします。濁点・半濁点は合成/分解され
(カ + ゙ ↔ ガ)、半角形を持たないひらがな・漢字はそのまま残ります。V4 は
Microsoft.VisualBasic.Strings.StrConv を使っていましたが、V5 は自前の対応表なので
macOS / Linux でも同じ結果になります。
情報
ISBLANK ISERR ISERROR ISNA ISNUMBER ISTEXT ISNONTEXT ISLOGICAL
ISEVEN ISODD NA
検索・参照
VLOOKUP HLOOKUP XLOOKUP INDEX MATCH XMATCH OFFSET CHOOSE
ADDRESS INDIRECT ROW ROWS COLUMN COLUMNS
ROW / COLUMN / OFFSET などの参照を返す関数は、引数の構文木を直接読む遅延評価です。
そのため OFFSET(A1, 1, 0) のように参照そのものを返す使い方ができます。
XLOOKUP / XMATCH は検索方法(0 完全一致・-1 以下の最大・1 以上の最小・
2 ワイルドカード)と検索方向(1 先頭から・-1 末尾から)を取ります。戻り配列が
複数列(行)のときは該当する行(列)を範囲として返すので、SUM(XLOOKUP(…)) と書けます。
INDIRECT は文字列をアドレスとして解決します。A1 形式の文字列は式パーサをそのまま通す
ので、'My Sheet'!A1 のようなシート修飾や $ も式中と同じ規則で効きます。第 2 引数に
FALSE を渡すと R1C1 形式(R[1]C[0] は呼び出し元セルからの相対)になります。
INDIRECT は参照を評価時に文字列から組み立てるため、読むセルを依存グラフが追えません。
Excel と同じく**揮発性(volatile)**として扱い、再計算のたびに評価し直します。
OFFSET は変位・サイズが定数なら登録時に参照先が確定するので、通常の依存として登録します
(OFFSET(A1,1,0) は A2 の変更だけで再計算=揮発性のコストを払いません)。変位が計算式のとき
(OFFSET(A1,C1,0))だけ揮発性になります。
日付・時刻
| 現在時刻 | TODAY NOW |
| 生成 | DATE TIME DATEVALUE TIMEVALUE |
| 取り出し | YEAR MONTH DAY HOUR MINUTE SECOND MILLISECOND WEEKDAY |
| 週番号 | WEEKNUM ISOWEEKNUM |
| 計算 | DAYS EDATE EOMONTH NETWORKDAYS WORKDAY |
日付は OLE オートメーションのシリアル値として保持されます。1900 年方式と 1904 年方式の どちらの XLSX も読み込めます。
NETWORKDAYS / WORKDAY は土日を休みとして数え、第 3 引数に祝日の一覧(範囲でも可)を
取ります。WEEKNUM の週の開始日は第 2 引数(1 日曜・2 月曜・11〜17・21 は ISO)
で指定します。
条件式(SUMIF 系)
SUMIF / COUNTIF / AVERAGEIF とその複数条件版は、Excel と同じ条件文字列を受け付けます。
| 条件 | 意味 |
|---|---|
">100" | 100 より大きい |
"<=0" | 0 以下 |
"<>" | 空でない |
"りんご" | 完全一致(大文字小文字を区別しない) |
"り*" | ワイルドカード(* は 0 文字以上、? は 1 文字) |
エラーの伝播
引数のいずれかがエラーの場合、原則としてそのエラーがそのまま返ります。
例外は IFERROR / IFNA / ISERROR / ISERR / ISNA で、これらはエラーを受け取って処理します。
Excel との差異
- 関数名のローカライズには対応していません。 日本語の関数名(
合計など)は使えません PHONETICは未実装です。 セルにふりがな属性(<rPh>)を持たせる仕組みが前提になるため、 単独では実装していません- 動的配列関数は未実装です —
FILTERSORTUNIQUESEQUENCELETLAMBDA
登録されている関数を列挙する
foreach (string name in unvell.ReoGrid.Core.Formula.FunctionRegistry.Default.Names)
Console.WriteLine(name);
この一覧が常に正本です。本ページと食い違う場合は実装側が正しいものとして扱ってください。