Skip to content

数式カバレッジ

このページは、Formulon が認識する Excel 関数名の一覧と、各関数をローカルで評価できるかどうかを説明します。内部的には、実行時レジストリの RegistryCatalog.CoverageReport と、tools/catalog/function_status.tsv の対応状況注記に基づきます。

認識対象は「ローカルで実行できる関数」と同じではありません

522 という数は、Formulon が名前を認識する Excel 関数の数です。この中には COPILOTPYIMAGERTDSTOCKHISTORYWEBSERVICE、翻訳関数、CUBE 接続関数のように、Excel 側では外部サービスやホスト固有の状態へ処理を委ねる関数も含まれます。これらは意図的に名前を認識しますが、ローカル実装済みではありません。

概要

Formulon は現在、522 件の Excel 関数名を認識対象にしています。505 / 522 件が無条件で実体のあるローカルエンジン実装です。対応状況の全体(合計すると 522 になります)は次のとおりです。

状態件数意味
完全ローカル実装505ワークブック / ホスト状態への依存なしにローカルで評価し、unit テストまたは Oracle テストの少なくとも一方で検証する
環境依存2同じくローカルで評価するが、一部結果がワークブックやホスト状態に依存する(CELLINFO
外部サービススタブ15名前と引数数は認識するが、必要な外部サービスが Formulon の外にあるため、決定的な Excel エラーを返す
認識対象の合計522

なぜ 507 ではないのか

Formulon 自身の README と tools/catalog/status.py は実装数を 507 件と報告しています。この数値は done - unavailable(522 − 15)で、環境依存の 2 件を差し引いていないため、CELL / INFO を「実装」と「環境依存」の両方で二重に数えています。このページでは、重複のない厳密な内訳(505 + 2 + 15 = 522)を採用しています。

この範囲が、Formulon の互換性を説明するうえでの前提です。Formulon は広い範囲の数式をローカルで評価しますが、Microsoft 365 のクラウドサービス、クラウド Python 実行環境、HTTP クライアント、OLAP キューブ接続、RTD COM プロバイダー、Copilot を内蔵しているわけではありません。

現在のローカル検証では、fast test が 14342/14342 pass、primary formula Oracle が 4026/4026 pass / 166 documented skips です。残っている skip は、明示済みの divergence、ホストサービス依存、揮発・環境依存ケース、またはドライバ制約です。未実装経路を黙って通しているものではありません。

522 件のうち 515 件は closure 6 条件 (behaviors_declared / cases_cover_behaviors / golden_present / divergence_documented / not_in_pilot / behavior_drift) を満たしています。残る 7 件 (FILTERXML, ARRAYTOTEXT, CONCAT, CHAR, TRUE, GETPIVOTDATA, PHONETIC) は Oracle データのメタ情報側の課題で、既知の実装不一致ではありません。

カテゴリ別の認識対象

カテゴリ認識対象注記
数学 / 三角81ローカル実装
統計149ローカル実装
論理20ローカル実装
テキスト50ローカル実装
日付 / 時刻25ローカル実装
検索 / 参照39動的配列対応の検索挙動を含むローカル実装。IMAGERTD は外部サービススタブ
財務56STOCKHISTORY は外部サービススタブ
エンジニアリング54ローカル実装
情報19環境依存の CELLINFO を含む。このカテゴリに外部サービススタブはない
データベース12ローカル実装
Web4ENCODEURLFILTERXML は実装済み。WEBSERVICEPY は外部サービススタブ
キューブ7接続関数として名前は認識するが、ライブ OLAP 接続は Formulon の対象外
2024 / 2025 追加関数6COPILOTTRANSLATEDETECTLANGUAGE などの外部サービススタブを含む

ワークブック単位の Oracle 検証トラック

数式レベルの Oracle 検証はセル値を確認します。ピボットテーブルや印刷レイアウトは、挙動が数式の結果ではなくワークブック構造として保存されているため、ワークブック単位の Oracle 検証トラックが別途必要です。

このトラックは、信頼できる PivotTable 自動化に Windows Excel COM が必要なため、win-365-ja_JP をプライマリプロファイルとして使います。pivot suite は 28/28 でクローズ済み、print_basic / print_pagination / print_fit / print_matrixformulon_workbook_oracle_tests35/41 pass です。残る 6 件は、PageSetup.Zoom <= 50 で発生する既知の Excel PageBreakPreview COM の quirk による win-365-ja_JP scope の divergence skip として記録しています。

外部サービススタブ

次の関数名は意図的に認識します。未知関数として処理するのではなく、予測可能な Excel 風のエラーに落とすためです。いずれも Formulon がローカル計算として扱う範囲の外にあります。

関数ローカル実装ではない理由Formulon の挙動
COPILOTMicrosoft 365 Copilot / LLM サービスが必要固定の利用不可エラー
PYMicrosoft 365 のクラウド Python 実行環境が必要固定の利用不可エラー
IMAGE画像取得と描画を行うホスト機能が必要固定の利用不可エラー
RTD外部の Real-Time-Data プロバイダーが必要固定の利用不可エラー
STOCKHISTORYMicrosoft の市場データサービスまたはネットワーク I/O が必要固定の利用不可エラー
WEBSERVICEHTTP / ネットワーク I/O が必要固定の利用不可エラー
TRANSLATE, DETECTLANGUAGEクラウド翻訳 / 言語判定サービスが必要固定の利用不可エラー
CUBEKPIMEMBER, CUBEMEMBER, CUBEMEMBERPROPERTY, CUBERANKEDMEMBER, CUBESET, CUBESETCOUNT, CUBEVALUEライブ OLAP キューブ接続が必要固定の利用不可エラー

実務上の確認

既存ワークブックでは、関数カバレッジを最初の確認項目として扱ってください。最終的な判断には、業務上重要な数式群ごとに小さな検証ファイルを作り、対象の Excel プロファイルと結果を比較します。

sh
formulon dump --formulas workbook.xlsx > formulas.txt

一次情報源

認識対象の一覧は tools/catalog/functions.txt にあります。対応状況の注記は tools/catalog/function_status.tsv にあり、そこに載っていない項目はローカル実装として扱います。実行時レジストリのテストは「認識対象の名前が実行時に解決できること」を検証しますが、その数をローカル実装数と取り違えないように、対応状況ファイルで分類しています。