@cell および @row を用いて効率的な数式を作成する

数式を最適化すると、シートの全体的なパフォーマンスが向上し、数式でセルを手動で参照する必要がなくなります。

ご利用可能なユーザー

プラン:

  • Smartsheet
  • Pro
  • Business
  • Enterprise

権限:

  • 所有者
  • 管理者
  • 編集者

Find out if this capability is included in Smartsheet Regions or Smartsheet Gov.

エンタープライズ プランのユーザーは、AI を使用して数式を作成できます。詳細はこちら

編集者の共有権限を持つユーザーは、シートのロックされていないセルでのみ、数式を作成および編集できます。

シートが大きくなるほど、効率的に作成された数式がパフォーマンスの向上により役立ちます。ここでは、より効率的な数式の作成に役立つ 2 つの関数、@cell と @row をご紹介します。

@cell を用いてよりスマートなセル計算を実行する

セルの範囲を参照する数式 (SUMIF、SUMIFS、COUNTIF、COUNTIFS など) の計算を実行したい場合は、関数の条件で @cell 引数を使用します。@cell 引数は、主な関数 (SUMIF など) が範囲内の基準を評価するのと同時に各行の計算を実行するため、数式をより効率的に行うことができます。

たとえば、下の画像のサンプル データを使用して、期日が 2023 年であるすべてのタスクの費用を合計する場合は、次の数式を作成します。

=SUMIF([期日]1:[期日]5, YEAR(@cell) = 2023, 費用1:費用5)

この画像は、SUMIF 数式を示しています。

 

数式に IFERROR 関数を追加しておくことで、@cell が数式内で空白のセルに遭遇した場合にエラーが表示されないようにできます。例: =COUNTIF(日付:日付, IFERROR(YEAR(@cell), 0) = 2016)

 

@row を用いて数式のパフォーマンスを向上させる

@row を使用すると、列内のセル参照 (タスクのステータスなど) を自動的に変更できるため、多数の行がある場合でもパフォーマンスを向上させることができます。 
数式を使用して、このグリッドの [ステータス] 列の記号を自動的に変更するとします。

この画像は、ステータス ライトを自動的に変更するために使用される数式を示しています。

 

ここでは、[ステータス] 列にある赤黄緑のライトの色変更を自動化するために作成する数式の例を紹介します。

=IF(完了3 > 1, IF(TODAY() - [期日]3 > 0, "赤", IF(TODAY() - [期日]3 > -3, "黄", "緑")) )

上記の数式には、行 3 のセルに対する複数の参照が含まれています。行 3 の上に行を追加すると、数式内のすべてのセル参照が行 4 に自動的に更新されます。下の各行の数式も同様に変更されます。変更する必要がある数式が多いほど、Smartsheet でのパフォーマンスに影響が及びます。

シートのパフォーマンスを向上させるには、セル参照の行番号を @row に置き換えます。@row を使用した数式は次のようになります。

=IF(完了@row > 1, IF(TODAY() - [期日]@row > 0, "赤", IF(TODAY() - [期日]@row > -3, "黄", "緑")))

行を移動しても Smartsheet ではセルの参照を変更する必要がないため、シートの読み込みと保存が速くなります。また、セル参照の行番号を手動で変更しなくても、この数式をコピーして貼り付けることができるため、数式をコピーする必要があるときに時間を節約できます。 

さらにサポートが必要な場合

他のサポート リソースをお探しの場合は、数式ハンドブック テンプレートをご活用ください。リアル タイムで操作を練習できるすべての関数の用語集や、よく使われる数式と高度な数式の例を含む、100 個以上の数式を記載しています。

Smartsheet の他のお客様がこの関数をどのように使用しているかの例を検索したり、Smartsheet オンライン コミュニティで特定の使用例について質問したりすることができます。

コミュニティに質問する