適用対象
- Pro
- Business
- Enterprise
@cell および @row を用いて効率的な数式を作成する
Who can use this?
Plans:
- Smartsheet
- Pro
- Business
- Enterprise
数式を最適化することでシート全体のパフォーマンスが向上し、数式内のセルを手動で参照する必要がなくなります。
シートのサイズが大きくなればなるほど、効率的に数式を作成することで、パフォーマンスが向上します。 ここでは、数式の効率化に役立つ 2 つの関数、@cell と @row をご紹介します。
@cell を使用して、よりスマートなセル計算を実行する
一定の範囲のセルを調べる数式で計算を実行したい場合 (例: SUMIF、SUMIFS、COUNTIF、COUNTIFS)、関数の条件に @cell 引数を使用できます。 @cell 引数は、主要な関数 (SUMIF など) が範囲内の基準を評価するのと同時に各行の計算を行うので、数式をより効率的にすることができます。
たとえば、下の画像のサンプル データを使用して、期日が 2014 年のすべてのタスクのコストを合計したい場合は、次のような式を作成します。
=SUMIF([期日]1:[期日]5, YEAR(@cell) = 2014, Cost1:Cost5)
この数式の結果は、875.75 ドル (期日が 2014 年のすべてのタスクのコストの合計) となります。
ヒント: 数式に IFERROR 関数を追加すると、@cell が数式で空白のセルを検出した場合にもエラーにならなくなります。 例: =COUNTIF(Date:Date, IFERROR(YEAR(@cell), 0) = 2016)
@row を使用して、数式のパフォーマンスを向上させる
@row を使用すると、多数の行に対する列のセル参照 (タスクのステータスなど) を自動的に変更して、パフォーマンスを向上させることができます。
たとえば、数式を使用して、このグリッドのステータス列の記号を自動的に変更したいとします。
ステータス列の RYG ボールの色の変更を自動化するための数式の例を次に示します。
=IF(Complete3 <> 1, IF(TODAY() - [期日]3 > 0, "赤", IF(TODAY() - [期日]3 > -3, "黄", "緑")))
上記の数式には、行 3 のセルへの複数の参照が含まれています。 行 3 の上に行を追加すると、Smartsheet は数式内のすべてのセル参照を行 4 に自動的に更新します。 Smartsheet は下の各行の数式も同じように変更します。 変更しなければならない数式が増えると、Smartsheet でのパフォーマンスへの影響が大きくなります。
シートのパフォーマンスを向上させるには、セル参照の行番号を @row に置き換えます。 @row を使用した数式は次のようになります。
=IF(Complete@row <> 1, IF(TODAY() - [期日]@row > 0, "赤", IF(TODAY() - [期日]@row > -3, "黄", "緑")))
行が移動されても Smartsheet はセル参照を変更する必要がないため、シートの読み込みと保存の時間が短縮されます。 また、セル参照の行番号を手動で変更せずにこの数式をコピー/貼り付けすることができるので、数式をコピーする手間を省くことができます。