IF 関数

条件に基づいた選択を行うには、IF 関数を使用します。これは、回答に応じてシートが返す値を指定する「はい/いいえ」の質問を作成するようなものです。

構文

IF(logical_expression, value_if_true, [value_if_false])
  • logical_expression
    確認する条件です。結果は、TRUE または FALSE で返されます。
  • value_if_true
    条件が TRUE の場合に返される結果です。文字列、数値、セル参照、または別の数式を指定できます。
  • value_if_false—[任意]
    [オプション] 条件を満たさなかった場合 (FALSE) に返される結果です。この引数を省略した場合、関数は空白の値を返します。

使用例

IF([完了日]@row ≤ [期日]@row, "タスクは予定通り、または予定より早く終了した", "タスクは予定より遅れて終了した")

利用上の注意

  • 「承認済み」や「リスクあり」などのテキスト値は、必ず引用符で囲んでください。
  • IF 関数をネストして、複数の論理評価を行うことができます。
  • ネストされた数式は、各論理式の TRUE または FALSE の結果に従い、一度に 1 つずつ条件を評価しながら、数式内の 1 つの経路をたどります。数式全体を評価して、最も TRUE に近い経路を選択するわけではありません。
  • ネストされた数式を作成する際、すでに評価した条件を再確認する必要はありません。たとえば、今日以降の日付を確認する場合は、数式内の別の場所で同じ条件をもう一度確認する必要はありません。つまり、=IF(日付@row>=Today(), "期限超過ではない", IF(日付@row の場合、2 番目の IF は不要です。「TRUE」としてトリガーされなかった日付はすべて今日より前の日付なので、その条件をもう一度確認する必要はありません。

例 1: シンプルなステータス チェック

[ステータス] 列があり、[アラート] 列で「リスクあり」に設定された行に自動的にフラグを立てる必要があるとします。

ステータス

アラート (この列の数式)

予定通り

リスクあり

予定通り

 

数式: =IF(ステータス@row = "赤", "リスクあり", "予定通り")

仕組み

この数式では、現在の行の[ステータス] 列の値が「」と等しいかどうかを確認します。TRUE の場合は「リスクあり」、FALSE の場合は「予定通り」という文字列が返されます。

ステータスやタスクの進捗状況に記号を使用している場合は、ドロップダウンを使用して各記号に割り当てられている文字列名を確認してください。その文字列名を記号の値として数式に入力します。大文字と小文字は、表示されている値の名前と完全に一致させてください。

例 2: より大きな計算式内で変動する値を設定する

タスクに必要な合計日数を計算するとします。基本期間は [期間] 列に入力されています。さらに、タスクの重要度に応じて異なるバッファ日数を追加したいとします。

  • タスクが「重要なタスク?」として指定されている場合(チェックボックスがオン)、さらに 5 日間のバッファを追加します。
  • タスクが重要でない (チェックボックスがオフ) 場合は、標準の 2 日間のバッファを追加します。

IF 関数は特定の値を返し、その値をより大きな数式の一部として使用できます。

期間

重要なタスク?

合計日数

10

15

7

🔲

9

5

10

 


数式: =[期間]@row + IF([重要なタスク?]@row, 5, 2)


仕組み

この数式では、IF 関数を使用して適切なバッファ日数を決定し、タスクの基本期間に加算します。

  1. この数式は最初に IF 関数 IF([重要なタスク?]@row, 5, 2) を評価します。
  2. 割り当てられる値:
    • 重要なタスク?」チェックボックスがオン (TRUE) の場合、IF 関数は 5 を返します。
    • チェックボックスがオフ (FALSE) の場合、IF 関数は値 2 を返します。
  3. 最終的な計算: IF 関数の結果 (5 または 2) が[期間] 列 ([期間]@row) の値に加算されます。

チェックボックス フィールドの値はすでに TRUE または FALSE のいずれかであるため、「TRUE」または「FALSE」を示すために等号 (=) を使用しなくても、IF 関数によって直接判定できます。


ネストされた IF 関数

シートで複数の条件を順番に確認したい場合は、ネストされた IF 関数を使用する必要があります。

ここで重要なのは、括弧を適切に管理することです。期待どおりに動作するように、それぞれの IF 関数を正しく閉じてください。

ネストされた IF 関数とは、単に、別の IF 関数の「value_if_true」、「value_if_false」、またはその両方の中に配置された IF 関数です。これにより、前の条件の結果に応じて、さらに別の条件を確認できます。

ネストされた IF 関数では、同じデータについて異なる条件を確認することも、まったく異なるデータについて条件を確認することもできます。複数の評価条件に基づいて、具体的で詳細な結果を取得できます。

例 1 - FALSE パスがネストされている: プロジェクトの健全性を追跡する

日付の近さに基づいて、セルに特定のステータスを表示したいとします。

  • 赤: タスクの期日を過ぎている場合。

  • 黄: タスクの期限が今後 7 日以内である場合 (ただし期限は過ぎていない)。

  • 緑: タスクの期限が現在から 7 日より後である場合。

数式: =IF([期日]@row TODAY(), "赤", IF([期日]@row = TODAY(7), "黄", "緑"))

仕組み

  1. 最初の IF (赤の判定):
    • 確認する条件: [期日]@row は今日より前ですか?
    • TRUE の場合: を返します。(数式はここで終了します)。
    • FALSE の場合: 日付が今日以降であるため、2 番目の IF 関数に進みます。
  2. 2 番目の IF (黄の判定):
    • 確認する条件: [期日]@row は今日から 7 日以内ですか?
    • TRUE の場合: を返します。(数式はここで終了します)。
    • FALSEの場合: 日付は 7 日以上先であるため、この IF 関数の value_if_false である を返します。

同じ値に対して異なる条件を確認するネストされた IF 関数を作成する場合は、数値なら小さい順、日付なら古い順など、条件を論理的な順序で並べてください。そうすることで、数式で期待した結果に到達できなくなることを防げます。

例 2 - TRUE パスがネストされている: 最近期限を過ぎたアイテムと重大な期限超過アイテムを特定する

日付の近さに基づいて、セルに特定のステータスを表示したいとします。

  • 赤: タスクの期限を 3 日以上過ぎている場合。
  • 黄: タスクの期限超過日数が 3 日未満である場合。
  • 緑: タスクの期限前の場合。

数式: =IF([期日]@row TODAY(), IF([期日]@row TODAY(-3), "赤", "黄"), "緑")

仕組み

  1. 最初の IF (期限超過の判定)
  • 確認する条件: [期日]@row は今日より前ですか?
  • TRUE の場合: 2 番目の IF 関数に進みます。
  • FALSE の場合: 日付が今日以降であるため、を返します。(数式はここで終了します)。
  1. 2 番目の IF (赤または黄の判定):
  • 確認する条件: [期日]@row は 3 日前より前ですか?
  • TRUE の場合: を返します。(数式はここで終了します)。
  • FALSE の場合: 日付の期限超過が 3 日未満であるため、を返します。

例 3 - 両方のパスがネストされている: 優先度に基づいてフラグを適用する

日付の近さとプロジェクトの優先度フラグに基づいて、セルに特定のステータスを表示したいとします。

優先度の高いタスク:

  • 赤: タスクの期限が過ぎている場合
  • 黄: タスクの期限が今後 5 日以内である場合
  • 緑: タスクの期限前の場合

通常の優先度のタスク:

  • 赤: タスクの期限が過ぎている場合
  • 黄: タスクの期限が今後 3 日以内である場合
  • 緑: タスクの期限前の場合

数式: =IF([期日]@row TODAY(), "赤", IF(優先度@row, IF([期日]@row >= TODAY(5), "黄", "緑"), IF([期日]@row >= TODAY(3), "黄", "緑")))

仕組み

  1. 最初の IF (期限超過の判定)
  • 確認する条件: [期日]@row は今日より前ですか?
  • TRUE の場合: を返します。(数式はここで終了します)。
  • FALSE の場合: 2 番目の IF 関数に進みます。
  1. 2 番目の IF 関数 (優先度の判定):
  • 確認する条件: 優先度@row は TRUE (優先度が高い) ですか?
  • TRUE の場合: 3 番目の IF に進みます。
  • FALSE の場合: 4 番目の IF に進みます。
  1. 3 番目の IF (優先度の高いタスクの判定)
  • 確認する条件: [期日]@row の期限は今後 5 日以内ですか?
  • TRUE の場合: を返します。(数式はここで終了します)。
  • FALSE の場合: を返します。(数式はここで終了します)。
  1. 4 番目の IF (通常の優先度のタスクの判定)
  • 確認する条件: [期日]@row の期限は今後 3 日以内ですか?
  • TRUE の場合: を返します。(数式はここで終了します)。
  • FALSE の場合: を返します。(数式はここで終了します)。

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

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

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

コミュニティに質問する