Excel でカスタム関数を作成するCreate custom functions in Excel

開発者は、カスタム関数を使用して関数をアドインの一部として JavaScript で定義することによって、Excel に新しい関数を追加できます。Custom functions enable developers to add new functions to Excel by defining those functions in JavaScript as part of an add-in. ユーザーは Excel 内から、SUM() などの Excel のあらゆるネイティブ関数の場合と同じようにカスタム関数にアクセスできます。Users within Excel can access custom functions just as they would any native function in Excel, such as SUM().

重要

Excel カスタム関数は、次のプラットフォームで使用できることに注意してください。Note that Excel custom functions are available on the following platforms.

  • Windows での OfficeOffice on Windows
  • Mac 上の OfficeOffice on Mac
  • Office on the webOffice on the web

Excel カスタム関数は、現在 iPad または Office 2019 以前の1回限りの購入バージョンではサポートされていません。Excel custom functions are currently not supported on iPad or in one-time purchase versions of Office 2019 or earlier.

次のアニメーション画像は、JavaScript または Typescript で作成した関数を呼び出すブックを示しています。The following animated image shows your workbook calling a function you've created with JavaScript or Typescript. この例では、カスタム関数 =MYFUNCTION.SPHEREVOLUME は球の体積を計算します。In this example, the custom function =MYFUNCTION.SPHEREVOLUME calculates the volume of a sphere.

animated image showing an end user inserting the MYFUNCTION.SPHEREVOLUME custom function into a cell of an Excel worksheet

=MYFUNCTION.SPHEREVOLUME カスタム関数は次のコードにより定義されます。The following code defines the custom function =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 ランタイムを設定する必要があります。If your custom function add-in will use a task pane or a ribbon button, in addition to running custom function code, you will need to set up a shared JavaScript runtime. 詳細については、「Office アドインを構成して共有 JavaScript ランタイムを使用する 」を参照してください。See Configure your Office Add-in to use a shared JavaScript runtime to learn more.

コードでカスタム関数を定義する方法How a custom function is defined in code

Yo Office ジェネレーターを使用して Excel のカスタム関数アドイン プロジェクトを作成する場合、使用する関数および作業ウィンドウを制御するファイルが作成されます。If you use the Yo Office generator to create an Excel custom functions add-in project, it creates files which control your functions and task pane. このため、カスタム関数に重要なファイルに注意を集中できます。We'll concentrate on the files that are important to custom functions:

ファイルFile ファイル形式File format 説明Description
./src/functions/functions.js./src/functions/functions.js
またはor
./src/functions/functions.ts./src/functions/functions.ts
JavaScriptJavaScript
またはor
TypeScriptTypeScript
カスタム関数を定義するコードが含みます。Contains the code that defines custom functions.
./src/functions/functions.html./src/functions/functions.html HTMLHTML カスタム関数を定義する JavaScript ファイルに <script> 参照を提供します。Provides a <script> reference to the JavaScript file that defines custom functions.
./manifest.xml./manifest.xml XMLXML カスタム関数 JavaScript、JSON、HTML ファイルなど、カスタム関数が使用する複数のファイルの場所を指定します。Specifies the location of multiple files that your custom function use, such as the custom functions JavaScript, JSON, and HTML files. また、作業ウィンドウ ファイルおよびコマンド ファイルの場所を表示すると共に、カスタム関数が使用するランタイムも指定します。It also lists the locations of task pane files, command files, and specifies which runtime your custom functions should use.

スクリプト ファイルScript file

スクリプト ファイル (./src/customfunctions.js または /src/customfunctions.ts) には、カスタム関数を定義するコードと関数を定義するコメントが含まれています。The script file (./src/functions/functions.js or ./src/functions/functions.ts) contains the code that defines custom functions and comments which define the function.

add カスタム関数は次のコードにより定義されます。The following code defines the custom function add. コード コメントは、Excel にカスタム関数を記述する JSON メタデータ ファイルを生成するために使用されます。The code comments are used to generate a JSON metadata file that describes the custom function to Excel. 必須の @customfunction コメントが最初に宣言されて、これがカスタム関数であることを示します。The required @customfunction comment is declared first, to indicate that this is a custom function. 次に、description プロパティに続いて、first および second の 2 つのパラメーターが宣言されます。Next, two parameters are declared, first and second, followed by their description properties. 最後に returns の説明が記述されます。Finally, a returns description is given. カスタム関数で必要になるコメントに関する詳細については、「カスタム関数の JSON メタデータを自動作成する」を参照してください。For more information about what comments are required for your custom function, see Autogenerate JSON metadata for custom functions.

/**
 * 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;
}

マニフェスト ファイルManifest file

カスタム関数 (Yo Office ジェネレーターによって作成されたプロジェクトの ./manifest.xml) を定義するアドイン用 XML マニフェスト ファイルには、以下のような複数の機能があります。The XML manifest file for an add-in that defines custom functions (./manifest.xml in the project that the Yo Office generator creates) does several things:

  • カスタム関数の名前空間を定義します。Defines the namespace for your custom functions. ユーザーがアドインの一部として関数を特定するのに役立つように、名前空間がカスタム関数の前に付加されます。A namespace prepends itself to your custom functions to help customers identify your functions as part of your add-in.
  • カスタム関数マニフェストに固有の <ExtensionPoint> および <Resources> 要素を使用します。Uses <ExtensionPoint> and <Resources> elements that are unique to a custom functions manifest. これらの要素には、JavaScript、JSON、および HTML ファイルの場所に関する情報が含まれています。These elements contain the information about the locations of the JavaScript, JSON, and HTML files.
  • カスタム関数に使用するランタイムを指定します。Specifies which runtime to use for your custom function. 別のランタイムを特段必要とする場合を除いて、共有ランタイムは関数と作業ウィンドウの間でデータを共有できるため、共有ランタイムを常に使用することをお勧めします。We recommend always using a shared runtime unless you have a specific need for another runtime, because a shared runtime allows for the sharing of data between functions and the task pane. 共有ランタイムを使うことは、アドインが Microsoft Edge ではなく Internet Explorer 11 の使用を意味することに注意してください。Note that using a shared runtime means your add-in will use Internet Explorer 11, not Microsoft Edge.

Yo Office ジェネレーターを使用してファイルを作成する場合、共有ランタイムはこのようなファイルの既定ではないため、それを使用するようにマニフェストを調整することをお勧めします。If you are using the Yo Office generator to create files, we recommend adjusting your manifest to use a shared runtime, as this is not the default for these files. マニフェストを変更するには、「Excel アドインを構成して、共有されている JavaScript ランタイムを使用する」の手順に従います。To change your manifest, follow the instructions in Configure your Excel add-in to use a shared JavaScript runtime.

サンプル アドインからフル機能マニフェストを確認する方法については、「この Github リポジトリ」を参照してください。To see a full working manifest from a sample add-in, see this Github repository.

ヒント

複数の環境でアドインをテストする場合 (開発時、ステージング時、デモなど)、環境ごとに異なる XML マニフェストファイルを保持することをお勧めします。If you'll be testing your add-in across multiple environments (for example, in development, staging, demo, etc.), we recommend that you maintain a different XML manifest file for each environment. 各マニフェストファイルでは、次のことを行うことができます。In each manifest file, you can:

  • 環境に対応する Url を指定します。Specify the URLs that correspond to the environment.
  • DisplayName Resources エンドユーザーがサイドロードアドインの対応する環境を識別できるようにするために、内でのメタデータ値などの値をカスタマイズして、環境を示すことができます。Customize metadata values like DisplayName and labels within Resources to indicate the environment, so that end users will be able to identify a sideloaded add-in's corresponding environment.
  • namespaceアドインでカスタム関数が定義されている場合は、環境を示すようにカスタム関数をカスタマイズします。Customize the custom functions namespace to indicate the environment, if your add-in defines custom functions.

このガイダンスに従うことで、テストプロセスが合理化され、複数の環境に対してアドインが同時にサイドロードされるときに発生する問題を回避できます。By following this guidance, you'll streamline the testing process and avoid issues that would otherwise occur when an add-in is simultaneously sideloaded for multiple environments.

共同編集Coauthoring

Excel on the web および Microsoft 365 サブスクリプションに接続されている Windows 版の Excel では、Excel で共同編集を行うことができます。Excel on the web and on Windows connected to a Microsoft 365 subscription allow you to coauthor in Excel. ブックでカスタム関数を使用している場合、共同編集中の仕事仲間はカスタム関数のアドインを読み込むように要求されます。If your workbook uses a custom function, your coauthoring colleague is prompted to load the custom function's add-in. 双方がアドインを読み込むと、共同編集によりカスタム関数は結果を共有します。Once you both have loaded the add-in, the custom function shares results through coauthoring.

共同編集の詳細については、「Excel での共同編集」を参照してください。For more information on coauthoring, see About coauthoring in Excel.

次の手順Next steps

カスタム関数を試してみましょう。Want to try out custom functions? もしまだであれば、簡単なカスタム関数クイックスタートまたは、詳細なカスタム関数のチュートリアルをご覧ください。Check out the simple custom functions quick start or the more in-depth custom functions tutorial if you haven't already.

独自のカスタム関数を試すもう 1 つの簡単な方法はスクリプト ラボを使用し、アドインで Excel のカスタム関数を試してみることができます。Another easy way to try out custom functions is to use Script Lab, an add-in that allows you to experiment with custom functions right in Excel. 独自のカスタム関数を作成したり、提供されたサンプルを再生してみることができます。You can try out creating your own custom function or play with the provided samples.

関連項目See also