V4 V5

組込関数は 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 AVERAGE2 COUNT3 COUNTA4 MAX5 MIN
6 PRODUCT7 STDEV8 STDEVP9 SUM10 VAR
11 VARP12 MEDIAN13 MODE.SNGL14 LARGE15 SMALL
16 PERCENTILE.INC17 QUARTILE.INC18 PERCENTILE.EXC19 QUARTILE.EXC

※は AGGREGATE のみ。SUBTOTAL101〜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 月曜・111721 は ISO) で指定します。

条件式(SUMIF 系)

SUMIF / COUNTIF / AVERAGEIF とその複数条件版は、Excel と同じ条件文字列を受け付けます。

条件意味
">100"100 より大きい
"<=0"0 以下
"<>"空でない
"りんご"完全一致(大文字小文字を区別しない)
"り*"ワイルドカード(* は 0 文字以上、? は 1 文字)

エラーの伝播

引数のいずれかがエラーの場合、原則としてそのエラーがそのまま返ります。 例外は IFERROR / IFNA / ISERROR / ISERR / ISNA で、これらはエラーを受け取って処理します。

Excel との差異

  • 関数名のローカライズには対応していません。 日本語の関数名(合計 など)は使えません
  • PHONETIC は未実装です。 セルにふりがな属性(<rPh>)を持たせる仕組みが前提になるため、 単独では実装していません
  • 動的配列関数は未実装ですFILTER SORT UNIQUE SEQUENCE LET LAMBDA

登録されている関数を列挙する

foreach (string name in unvell.ReoGrid.Core.Formula.FunctionRegistry.Default.Names)
	Console.WriteLine(name);

この一覧が常に正本です。本ページと食い違う場合は実装側が正しいものとして扱ってください。

次に読む

ページの内容は役に立ちましたか?