ReoGrid ReoGrid Web

数式エンジン

ReoGrid Web は Excel 互換の数式エンジンを内蔵しています。AST パーサー、評価器、依存関係グラフによるリアルタイム再計算を行います。

Lite版は算術演算子とセル参照のみ対応。32以上の組み込み関数はPro版で利用可能です。

Live Demo

基本的な使い方

セル値が = で始まると数式として解釈されます。

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

組み込み関数一覧

数学関数

関数構文説明
SUMSUM(range)合計
AVERAGEAVERAGE(range)平均
MINMIN(range)最小値
MAXMAX(range)最大値
COUNTCOUNT(range)数値セルの個数
COUNTACOUNTA(range)空でないセルの個数
COUNTIFCOUNTIF(range, criteria)条件に一致するセルの個数
ABSABS(number)絶対値
SQRTSQRT(number)平方根
POWERPOWER(base, exp)べき乗
MODMOD(number, divisor)剰余
ROUNDROUND(number, digits)四捨五入
PRODUCTPRODUCT(range)

論理関数

関数構文説明
IFIF(condition, true_val, false_val)条件分岐
ANDAND(cond1, cond2, ...)すべて真なら TRUE
OROR(cond1, cond2, ...)いずれか真なら TRUE
NOTNOT(condition)論理否定

文字列関数

関数構文説明
CONCATENATECONCATENATE(str1, str2, ...)文字列結合
LENLEN(text)文字数
UPPERUPPER(text)大文字変換
LOWERLOWER(text)小文字変換
TRIMTRIM(text)前後空白除去
FINDFIND(search, text, start?)文字位置検索
REPLACEREPLACE(text, start, count, new)文字置換
SUBSTRINGSUBSTRING(text, start, length?)部分文字列

検索関数

関数構文説明
VLOOKUPVLOOKUP(value, range, col_index, approx?)縦方向検索
HLOOKUPHLOOKUP(value, range, row_index, approx?)横方向検索

日付関数

関数構文説明
TODAYTODAY()今日の日付(シリアル値)
NOWNOW()現在の日時(シリアル値)

型判定関数

関数構文説明
ISNUMBERISNUMBER(value)数値なら TRUE
ISTEXTISTEXT(value)テキストなら TRUE
ISBLANKISBLANK(cell)空なら TRUE
ISERRORISERROR(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+)対応