Smartsheetで先行タスクのステータスを取得する (Community)

はじめに

Smartsheetでは、先行タスクの完了状況に応じて、自タスクのステータスを自動的に変更することができます。この機能を利用することで、タスクの進捗状況をより正確に把握し、プロジェクト全体の計画と管理を効率化することができます。

image.png

質問の要約

バートン・ブラックさんは、Smartsheetのステータス列の式を使用して、先行タスクが完了していない場合でも、自タスクを「準備完了」と表示したくないという質問をしています。(オリジナルのCommunity記事はこちら

答えの要約

この質問に対する回答として、jmyzk_cloudsmart_jpさんは、単一の先行タスクと複数の先行タスクの両方に対応する解決策を提案しています。

単一の先行タスクの場合

単一の先行タスクの場合、先行タスクの行番号を取得し、その行の「% 完了」列の値を参照することで、先行タスクの完了状況を判断することができます。

具体的には、以下の式を使用します。

=IF(AND([% 完了]@row > 0, [% 完了]@row < 1), “進行中”, IF([% 完了]@row = 1, “完了”, IF(AND([% 完了]@row = 0, [Pred % Complete]@row = 1), “準備完了”)))

この式では、最初の AND 関数で、自タスクの「% 完了」列の値が 0 以上かつ 1 未満であることをチェックします。この条件を満たす場合、自タスクは「進行中」のステータスになります。

次の IF 関数で、自タスクの「% 完了」列の値が 1 であることをチェックします。この条件を満たす場合、自タスクは「完了」のステータスになります。

最後の IF 関数で、自タスクの「% 完了」列の値が 0 であり、先行タスクの「% 完了」列の値が 1 であることをチェックします。この条件を満たす場合、自タスクは「準備完了」のステータスになります。

複数の先行タスクの場合

複数の先行タスクがある場合は、先行タスクの行番号を取得するために、FIND 関数や LEFT 関数などのテキスト関数を使用する必要があります。

具体的には、以下の式を使用します。

=IF(AND([% 完了]@row > 0, [% 完了]@row < 1), “進行中”, IF([% 完了]@row = 1, “完了”, IF(AND([% 完了]@row = 0, [Pred 1 % Complete]@row = 1, [Pred 2 % Complete]@row = 1, [Pred 3 % Complete]@row = 1), “準備完了”)))

この式では、最初の AND 関数で、自タスクの「% 完了」列の値が 0 以上かつ 1 未満であることをチェックします。この条件を満たす場合、自タスクは「進行中」のステータスになります。

次の IF 関数で、自タスクの「% 完了」列の値が 1 であることをチェックします。この条件を満たす場合、自タスクは「完了」のステータスになります。

最後の IF 関数で、自タスクの「% 完了」列の値が 0 であり、先行タスクの「% 完了」列の値がすべて 1 であることをチェックします。この条件を満たす場合、自タスクは「準備完了」のステータスになります。

image.png
image.png

まとめ

Smartsheetでは、先行タスクのステータスを取得するために、以下の方法を使用することができます。

  • 単一の先行タスクの場合:先行タスクの行番号を取得し、その行の「% 完了」列の値を参照する。
  • 複数の先行タスクの場合:先行タスクの行番号を取得するために、FIND 関数や LEFT 関数などのテキスト関数を使用する。

これらの方法を組み合わせることで、より複雑な条件にも対応することができます。

やり取りの翻訳

Smartsheetで先行タスクのステータスを取得する

バートン・ブラック
12/29/23

やあ皆さん、数式についてのヘルプが必要です。私が持っているものは機能しますが、方法はわかりませんが、別の条件を追加したいと考えています。先行タスクが完了しない限り、ステータスが準備完了と表示されることを望みません。数式をコピー/ペーストするのではなく、特定の行を参照する必要があります。考えは?現在の式は次のとおりです

=IF(AND([% 完了]@row > 0, [% 完了]@row < 1), “進行中”, IF([% 完了]@row = 1, “完了”, IF([% 完了] @row = 0、「準備完了」)))

ベストアンサー

jmyzk_cloudsmart_jp ✭✭✭✭✭✭

2023/12/30 2023 年 12 月 30 日編集

こんにちは@バートン・ブラック
このためにいくつかのヘルパー列を追加します。
単一のプリプレッサーの場合
まず、先行者が 1 つしかない場合は、先行者の行番号の値を取得できます。 (数式は、先行値をテキストに変換してから数値に変換します。)

  • [前] =VALUE(先行者@行 + “”)

値を使用して、先行者の [% Complete] を取得できます。 (先行者の[ステータス]を参照すると、次の式の[ステータス]列で循環参照エラーが発生するため、代わりに[% Complete]を使用します)

  • [Pred % Complete] =IF(Pred@row > 0, INDEX([% 完了]:[% 完了], Pred@row))最後に、数式で追加の条件として [Pred % Complete] を使用できます。
  • =IF(AND([% 完了]@row > 0, [% 完了]@row < 1), “進行中”, IF([% 完了]@row = 1, “完了”, IF(そして([% 完了]@row = 0、[Pred % Complete]@row = 1)、 “準備ができて”)))

複数のプリプレッサの場合
以下の例では、複数の先行ケースに対処しようとしています。
たとえば、下の図の 4 行目に示されているように、先行者の値が「2,3」である場合、上記の VALUE(先行者@行 + “”) 式は使用できません。 FIND、LEFT などのテキスト関数を使用して、個々の先行値を取得する必要があります。
プロジェクト シートが複数の先行プログラムに対応する必要がある場合は、公開されているダッシュボード シートの列式を参照してください。それ以外の場合は、上記の式を試してください。https://app.smartsheet.com/b/publish?EQBCT=5680f8df74e047c9b24e5b461ac677d2

答え

jmyzk_cloudsmart_jp ✭✭✭✭✭✭
2023/12/30 2023 年 12 月 30 日編集

こんにちは@バートン・ブラック
このためにいくつかのヘルパー列を追加します。
単一のプリプレッサーの場合
まず、先行者が 1 つしかない場合は、先行者の行番号の値を取得できます。 (数式は、先行値をテキストに変換してから数値に変換します。)

  • [前] =VALUE(先行者@行 + “”)値を使用して、先行者の [% Complete] を取得できます。 (先行者の[ステータス]を参照すると、次の式の[ステータス]列で循環参照エラーが発生するため、代わりに[% Complete]を使用します)
  • [Pred % Complete] =IF(Pred@row > 0, INDEX([% 完了]:[% 完了], Pred@row))最後に、数式で追加の条件として [Pred % Complete] を使用できます。
  • =IF(AND([% 完了]@row > 0, [% 完了]@row < 1), “進行中”, IF([% 完了]@row = 1, “完了”, IF(そして([% 完了]@row = 0、[Pred % Complete]@row = 1)、 “準備ができて”)))

複数のプリプレッサの場合
以下の例では、複数の先行ケースに対処しようとしています。
たとえば、下の図の 4 行目に示されているように、先行者の値が「2,3」である場合、上記の VALUE(先行者@行 + “”) 式は使用できません。 FIND、LEFT などのテキスト関数を使用して、個々の先行値を取得する必要があります。
プロジェクト シートが複数の先行プログラムに対応する必要がある場合は、公開されているダッシュボード シートの列式を参照してください。それ以外の場合は、上記の式を試してください。

回答後のやり取り

https://app.smartsheet.com/b/publish?EQBCT=5680f8df74e047c9b24e5b461ac677d

アシュラフ ✭✭
2023年12月31日
こんにちは@jmyzk_cloudsmart_jp

ここで共有していただいたアイデアと回避策をありがとうございます。すごいですね!
3 つの先行プロセッサと、その一部にラグの詳細を適用した場合はどうなるでしょうか?
これに対する解決策があれば大変助かります。

ありがとう。

jmyzk_cloudsmart_jp ✭✭✭✭✭✭
2023年12月31日 2023 年 12 月 31 日編集

こんにちは@アシュラフ
3 先人
まず、「,」の位置を見つけるために 2 つのヘルパー列を追加しました。

  • [検索 , 1] =FIND(“,”, 先行者@行)
  • [FInd , 2] =IF([FInd , 1]@row > 0, FIND(“,”, 先行者@row, [FInd , 1]@row + 1), 0)次に、これらの FIND 値を使用して、3 つのヘルパー列を追加しました。
  • [[Pred 1 Text]=IF([FInd , 1]@row > 0, LEFT(Predecessors@row + “”, FIND(“,”, Predecessors@row + “”) – 1), (Predecessors@row + “”))
  • [Pred 2 Text]=IF([FInd , 1]@row > 0, MID(Predecessors@row, [FInd , 1]@row + 1, IF([Find , 2]@row > 0, [Find , 2 ]@row – [FInd , 1]@row – 1, LEN(先行者@row) – [FInd , 1]@row)))
  • [Pred 3 テキスト]=IF(OR(CONTAINS(“F”, [Pred 3 テキスト]@row), CONTAINS(“S”, [Pred 3 テキスト]@row)), LEFT([Pred 3 テキスト]@row , FIND(“F”, SUBSTITUTE([Pred 3 Text]@row, “S”, “F”)) – 1), [Pred 3 Text]@row)

ラグ詳細の適用
ラグの詳細はどの行が先行するかには影響しないので、TEXT関数で不要な部分を削除しました。

  • [Pred 1] =IF(OR(CONTAINS(“F”, [Pred 1 Text]@row), CONTAINS(“S”, [Pred 1 Text]@row)), LEFT([Pred 1 Text]@row, FIND(“F”, SUBSTITUTE([Pred 1 Text]@row, “S”, “F”)) – 1), [Pred 1 Text]@row)

ラグの詳細は「2FS +4d、3SF +3d」の形式をとるため、Predecessors@row に「F」または「S」が含まれているかどうかを判断できます。このチェックにより、5SS や 7FF などの Predecessors 値にもラグなく対応できます。
この数式は、「S」を「F」に変換し、最初の F 位置の前の行番号を取得することにより、行番号以外の部分を削除しました。
最後に、ステータス列の式に 3 番目の条件が追加されました。
=IF(AND([% 完了]@row > 0, [% 完了]@row < 1), “進行中”, IF([% 完了]@row = 1, “完了”, IF(AND([% Complete]@row = 0、[Pred 1 % Complete]@row = 1、[Pred 2 % Complete]@row = 1、[Pred 3 % Complete]@row = 1)、 “準備ができて”)))https://app.smartsheet.com/b/publish?EQBCT=e6317d033b4d4067b965418e3a316d52

image.png


image.png

アシュラフ ✭✭

01/01/24

こんにちは@jmyzk_cloudsmart_jp

あなたのソリューションを私のプロジェクト計画に組み込むことができました。本当に新しいプレゼントをもらいました😊

ご支援に心より感謝申し上げます。そして明けましておめでとうございます!

jmyzk_cloudsmart_jp ✭✭✭✭✭✭

01/01/24

@アシュラフ
わーい!私のソリューションがお役に立てて嬉しいです 明けましておめでとうございます!😁

バートン・ブラック

01/02/24

これは素晴らしいです!助けてくれてありがとう!

コメントを残す