Excel でカスタム関数を作成する

開発者は、カスタム関数を使用して関数をアドインの一部として JavaScript で定義することによって、Excel に新しい関数を追加できます。 ユーザーは Excel 内から、SUM() などの Excel のあらゆるネイティブ関数の場合と同じようにカスタム関数にアクセスできます。

重要

Excel カスタム関数は、次のプラットフォームで使用できます。

  • Office on Windows
  • Office on Mac
  • Office on the web

現在、Excel カスタム関数は iPad または Office 2019 以前の 1 回限りの購入バージョンではサポートされません。

次のアニメーション画像は、JavaScript または Typescript で作成した関数を呼び出すブックを示しています。 この例では、カスタム関数 =MYFUNCTION.SPHEREVOLUME は球の体積を計算します。

MYFUNCTION.SPHEREVOLUME カスタム関数を Excel ワークシートのセルへ挿入するエンド ユーザーを示すアニメーション画像。

=MYFUNCTION.SPHEREVOLUME カスタム関数は次のコードにより定義されます。

/**
 * Returns the volume of a sphere.
 * @customfunction
 * @param {number} radius
 */
function sphereVolume(radius) {
  return Math.pow(radius, 3) * 4 * Math.PI / 3;
}

ヒント

カスタム関数アドインがカスタム関数のコードの実行に加えて作業ウィンドウまたはリボン ボタンを使用する場合、共有 JavaScript ランタイムを設定する必要があります。 詳細については、「Office アドインを構成して共有 JavaScript ランタイムを使用する 」を参照してください。

コードでカスタム関数を定義する方法

Office アドイン用の Yeoman ジェネレーターを使用して Excel のカスタム関数アドイン プロジェクトを作成する場合、使用する関数および作業ウィンドウを制御するファイルが作成されます。このため、カスタム関数に重要なファイルに注意を集中できます。

ファイル ファイル形式 説明
./src/functions/functions.js
または
./src/functions/functions.ts
JavaScript
または
TypeScript
カスタム関数を定義するコードが含みます。
./src/functions/functions.html HTML カスタム関数を定義する JavaScript ファイルに <script> 参照を提供します。
./manifest.xml XML カスタム関数 JavaScript、JSON、HTML ファイルなど、カスタム関数が使用する複数のファイルの場所を指定します。 また、作業ウィンドウ ファイルおよびコマンド ファイルの場所を表示すると共に、カスタム関数が使用するランタイムも指定します。

スクリプト ファイル

スクリプト ファイル (./src/customfunctions.js または /src/customfunctions.ts) には、カスタム関数を定義するコードと関数を定義するコメントが含まれています。

add カスタム関数は次のコードにより定義されます。 コード コメントは、Excel にカスタム関数を記述する JSON メタデータ ファイルを生成するために使用されます。 必須の @customfunction コメントが最初に宣言されて、これがカスタム関数であることを示します。 次に、description プロパティに続いて、first および second の 2 つのパラメーターが宣言されます。 最後に returns の説明が記述されます。 カスタム関数で必要になるコメントに関する詳細については、「カスタム関数の JSON メタデータを自動作成する」を参照してください。

/**
 * Adds two numbers.
 * @customfunction 
 * @param first First number.
 * @param second Second number.
 * @returns The sum of the two numbers.
 */

function add(first, second){
  return first + second;
}

マニフェスト ファイル

カスタム関数 (Office アドイン用の Yeoman ジェネレーターによって作成されたプロジェクトの ./manifest.xml) を定義するアドイン用 XML マニフェスト ファイルには、以下のような複数の機能があります。

  • カスタム関数に名前空間を定義します。ユーザーがアドインの一部として関数を特定するのに役立つように、名前空間がカスタム関数の前に付加されます。
  • カスタム関数マニフェストに固有の <ExtensionPoint> および <Resources> 要素を使用します。 これらの要素には、JavaScript、JSON、および HTML ファイルの場所に関する情報が含まれています。
  • カスタム関数に使用するランタイムを指定します。別のランタイムを特段必要とする場合を除いて、共有ランタイムは関数と作業ウィンドウの間でデータを共有できるため、共有ランタイムを常に使用することをお勧めします。

Office アドイン用の Yeoman ジェネレーターを使用してファイルを作成する場合、共有ランタイムはこのようなファイルの既定ではないため、それを使用するようにマニフェストを調整することをお勧めします。 マニフェストを変更するには、「Excel アドインを構成して、共有されている JavaScript ランタイムを使用する」の手順に従います。

サンプル アドインからフル機能マニフェストを表示するには、Office アドインのサンプルの Github リポジトリのアドイン サンプルのいずれかでマニフェストを参照してください。

ヒント

複数の環境でアドインをテストする場合 (開発、ステージング、デモなど)、環境ごとに異なる XML マニフェスト ファイルを保持することをお勧めします。 各マニフェスト ファイルでは、次のことができます。

  • 環境に対応する URL を指定します。
  • Resources 内の DisplayName やラベルなどのメタデータ値をカスタマイズして環境を示し、エンド ユーザーがサイドロードされたアドインの対応する環境を識別できるようにします。
  • アドインでカスタム関数が定義されている場合は、カスタム関数 namespace をカスタマイズして環境を示します。

このガイダンスに従うことで、テスト プロセスを効率化し、アドインが複数の環境で同時にサイドロードされるときに発生する問題を回避します。

共同編集

Excel on the web および Microsoft 365 サブスクリプションに接続されている Windows 版の Excel では、エンド ユーザーは Excel で共同編集を行うことができます。 エンド ユーザーのブックでカスタム関数を使用している場合、そのエンド ユーザーの共同編集の仕事仲間は、対応するカスタム関数のアドインを読み込むように求められます。 両方のユーザーがアドインを読み込むと、共同編集によりカスタム関数は結果を共有します。

共同編集の詳細については、「Excel での共同編集」を参照してください。

次の手順

カスタム関数を試してみましょう。もしまだであれば、簡単なカスタム関数クイックスタートまたは、詳細なカスタム関数のチュートリアルをご覧ください。

独自のカスタム関数を試すもう 1 つの簡単な方法はスクリプト ラボを使用し、アドインで Excel のカスタム関数を試してみることができます。 独自のカスタム関数を作成したり、提供されたサンプルを再生してみることができます。

関連項目