数式エンジン
ReoGrid Web は Excel 互換の数式エンジンを内蔵しています。AST パーサー、評価器、依存関係グラフによるリアルタイム再計算を行います。
Lite版は算術演算子とセル参照のみ対応。32以上の組み込み関数はPro版で利用可能です。
基本的な使い方
セル値が = で始まると数式として解釈されます。
const ws = grid.worksheet
// 算術演算
ws.cell('C1').value = '=A1+B1'
ws.cell('C2').value = '=A2*B2'
// 関数呼び出し
ws.cell('C3').value = '=SUM(A1:A10)'
ws.cell('C4').value = '=IF(A1>100,"High","Low")'
セル参照
| 形式 | 説明 | 例 |
|---|
| 相対参照 | 行・列のインデックスが変動 | A1, B2 |
| 絶対参照 | $ で固定 | $A$1, A$1, $A1 |
| 範囲参照 | コロンで範囲指定 | A1:B10 |
組み込み関数一覧
数学関数
| 関数 | 構文 | 説明 |
|---|
SUM | SUM(range) | 合計 |
AVERAGE | AVERAGE(range) | 平均 |
MIN | MIN(range) | 最小値 |
MAX | MAX(range) | 最大値 |
COUNT | COUNT(range) | 数値セルの個数 |
COUNTA | COUNTA(range) | 空でないセルの個数 |
COUNTIF | COUNTIF(range, criteria) | 条件に一致するセルの個数 |
ABS | ABS(number) | 絶対値 |
SQRT | SQRT(number) | 平方根 |
POWER | POWER(base, exp) | べき乗 |
MOD | MOD(number, divisor) | 剰余 |
ROUND | ROUND(number, digits) | 四捨五入 |
PRODUCT | PRODUCT(range) | 積 |
論理関数
| 関数 | 構文 | 説明 |
|---|
IF | IF(condition, true_val, false_val) | 条件分岐 |
AND | AND(cond1, cond2, ...) | すべて真なら TRUE |
OR | OR(cond1, cond2, ...) | いずれか真なら TRUE |
NOT | NOT(condition) | 論理否定 |
文字列関数
| 関数 | 構文 | 説明 |
|---|
CONCATENATE | CONCATENATE(str1, str2, ...) | 文字列結合 |
LEN | LEN(text) | 文字数 |
UPPER | UPPER(text) | 大文字変換 |
LOWER | LOWER(text) | 小文字変換 |
TRIM | TRIM(text) | 前後空白除去 |
FIND | FIND(search, text, start?) | 文字位置検索 |
REPLACE | REPLACE(text, start, count, new) | 文字置換 |
SUBSTRING | SUBSTRING(text, start, length?) | 部分文字列 |
検索関数
| 関数 | 構文 | 説明 |
|---|
VLOOKUP | VLOOKUP(value, range, col_index, approx?) | 縦方向検索 |
HLOOKUP | HLOOKUP(value, range, row_index, approx?) | 横方向検索 |
日付関数
| 関数 | 構文 | 説明 |
|---|
TODAY | TODAY() | 今日の日付(シリアル値) |
NOW | NOW() | 現在の日時(シリアル値) |
型判定関数
| 関数 | 構文 | 説明 |
|---|
ISNUMBER | ISNUMBER(value) | 数値なら TRUE |
ISTEXT | ISTEXT(value) | テキストなら TRUE |
ISBLANK | ISBLANK(cell) | 空なら TRUE |
ISERROR | ISERROR(value) | エラーなら TRUE |
依存関係の自動追跡
数式間の依存関係は自動的に追跡されます。あるセルの値が変更されると、そのセルを参照しているすべての数式が自動的に再計算されます。
ws.cell('A1').value = '10'
ws.cell('B1').value = '20'
ws.cell('C1').value = '=A1+B1' // -> 30
// A1 を変更すると C1 が自動再計算
ws.cell('A1').value = '50' // C1 -> 70
データの一括変更後に数式の依存関係を再構築できます。
ws.rebuildFormulas()
使用例:請求書の計算
const ws = grid.worksheet
// ヘッダー
ws.cell('A1').value = '品名'
ws.cell('B1').value = '数量'
ws.cell('C1').value = '単価'
ws.cell('D1').value = '金額'
// データ行
ws.cell('A2').value = 'ウィジェット'
ws.cell('B2').value = '10'
ws.cell('C2').value = '500'
ws.cell('D2').value = '=B2*C2' // -> 5000
ws.cell('A3').value = 'ガジェット'
ws.cell('B3').value = '5'
ws.cell('C3').value = '1200'
ws.cell('D3').value = '=B3*C3' // -> 6000
// 小計
ws.cell('D5').value = '=SUM(D2:D3)' // -> 11000
// 消費税
ws.cell('D6').value = '=ROUND(D5*0.1,0)' // -> 1100
// 合計
ws.cell('D7').value = '=D5+D6' // -> 12100
エディション比較
| 機能 | Lite (無料) | Pro (有料) |
|---|
算術演算 (+, -, *, /) | 対応 | 対応 |
| セル参照・範囲参照 | 対応 | 対応 |
| 依存関係グラフ | 対応 | 対応 |
| 組み込み関数 (32+) | — | 対応 |