由于前一个任务已经完成而指示任务已经准备就绪的公式[解决方案]
我看到过许多帖子,人们希望能够指示特定的任务/行已经准备好开始,因为所有的前一个任务都已经完成(其中许多都已存档)。所有提出的解决方案都有不足之处(例如,只能处理具有单个FS前任且没有延迟的行)。这是我对这个问题的完整解决方案。
注1:我没有对此进行广泛测试。它在大的纸张上可能表现不佳。
注2:在本例中,我选择只与FS前辈一起工作(因为这对我来说是有意义的)。但是,我在下面指出要更改哪个公式,以便它可以与任何前类型一起工作。
这
解决方案可以通过添加至少2列到您现有的表格,
但为了便于理解,我将用6列来布局这个解释。
我将在最后提供2列解。
在这里
是我使用的6个列名:行ID,行ID逗号,Pred替换FS, Pred
计数、预完成计数和就绪状态
绿色的列可以转换为列公式。不幸的是,我不知道如何使用列公式获得可靠的行ID列。
第1列:行ID
1美元=条件统计([任务名称]:[任务名称]@row,或(@cell = " ", @cell < > " "))
在本例中,我引用了[Task Name]列,但可以使用任何列。我从另一个帖子里偷了这个公式,感谢Paul Newcome。不管你如何移动、复制、粘贴行,这个公式都有效。唯一的缺点是它不能是列式公式。https://community.smartsheet.com/discussion/69476/row-numbers
第2列:行ID,逗号
=", " +[行ID]@行+ ","
这一列实际上是通过计数公式来查找的。需要使用逗号来避免错误的阳性匹配(例如,防止在“20”中找到“2”,查找“,2,”不会在“,20,”中找到“,20,”
第三列: Pred替换FS
=", " +替换((电子邮件保护)," fs ",",") + ","
这个公式在“前任”列的开头和结尾添加了所需的逗号,并将“FS”更改为逗号(需要确保有延迟的FS前任仍然可以工作)。使用更多嵌套的替代公式修改此公式,使其可根据需要与其他前身类型(FF、SS、SF)一起使用。
列4: Pred Count
=COUNT(COLLECT([行号逗号]:[行号逗号],[行号逗号]:[行号逗号],AND(NOT(ISBLANK(@cell)), FIND(@cell, [Pred Replace FS]@row) > 0)))
这个公式计算[行ID逗号](查看每一行)在[Pred Replace FS]列(仅限当前行)中找到的行数。
列5: Pred Done Count
=COUNT(COLLECT([行ID逗号]:[行ID逗号],[行ID逗号]:[行ID逗号],AND(NOT(ISBLANK(@cell)), FIND(@cell, [Pred Replace FS]@row) > 0), [% Complete]:[% Complete], 1))
这类似于[Pred Count]列,除了它添加了一个附加条件:% Complete列也必须等于100%。此条件可以更改为指向不同的列(例如复选框列,状态列等)。
列6:就绪状态
=IF([Pred Done Count]@row = [Pred Count]@row, "Ready", "Waiting")
此列比较[预预计数]列和[预预完成计数]列。如果计数匹配,则所有前一个都结束。
2列方案:
第1列:一个公式行ID
= " +条件统计([任务名称]1美元:[任务名称]@row,或(@cell @cell = " <> "")) + ","
我将[Row ID]和[Row ID Comma]组合成一个公式。这不能是列式。
第2列:一个公式就绪状态
=IF(COUNT(COLLECT([行号逗号]:[行号逗号],[行号逗号]:[行号逗号],AND(NOT(ISBLANK(@cell)), FIND(@cell, ", " + replace ((电子邮件保护)," FS", ",") + ",") > 0), [% Complete]:[% Complete], 1)) = COUNT(COLLECT([行号逗号]:[行号逗号],[行号逗号]:[行号逗号],AND(NOT(ISBLANK(@cell)), FIND(@cell, "," + replace ((电子邮件保护)," FS", ",") + ",") > 0))), "准备好了","等待")
我将[Pred Replace FS], [Pred Count], [Pred Done Count]和[Ready Status]组合成一个公式。这可以转换为列公式。
评论
-
她名叫Stara ✭✭✭✭✭✭
Smartsheet专家顾问和合作伙伴
W:www.workbold.com| E:(电子邮件保护)| p: +46 (0) - 72 - 510 99 35
关于Smartsheet、集成、一般工作流建议或其他方面的帮助,请随时与我联系。
-
坦纳Polzin ✭✭✭✭✭✭
在我最初的帖子之后,我意识到两件事。首先,我的2列解中的公式仍然引用了Row ID的旧6列解。其次,可以通过将每个嵌套的COUNT(COLLECT(公式替换为单个COUNTIFS(公式)来缩短公式。这是所有更新的公式。
6列方案更新:
列4: Pred Count
=COUNTIFS([行ID逗号]:[行ID逗号],AND(NOT(ISBLANK(@cell)), FIND(@cell, [Pred替换FS]@row) > 0))
列5: Pred Done Count
=COUNTIFS([行ID逗号]:[行ID逗号],AND(NOT(ISBLANK(@cell)), FIND(@cell, [Pred Replace FS]@row) > 0), [% Complete]:[% Complete], 1)
2列方案更新:
第2列:一个公式就绪状态
=IF(COUNTIFS([一个公式行ID]:[一个公式行ID], AND(NOT(ISBLANK(@cell)), FIND(@cell, ", " +替换((电子邮件保护)," FS", ",") + ",") > 0),[%完整]:[%完整],1)= COUNTIFS([一个公式行ID]:[一个公式行ID], AND(NOT(ISBLANK(@cell)), FIND(@cell, "," +替换((电子邮件保护)," FS", ",") + ",") > 0)), "准备好了","等待")
父母排奖励:
最后,我注意到这些公式在父行上“工作”,但不是人们“希望”它们工作的方式。如果至少有一个子行表示就绪,我预计父行只会说“就绪”。这可以通过在最终输出公式中添加一个额外的IF语句来轻松实现,该语句将计算表示“就绪”的子语句的数量。下面是两个解的完整最终公式。
6列解,“就绪状态”栏:
=如果(数(孩子())= 0, IF([Pred Done Count]@row = [Pred Count]@row, "Ready", "Waiting"), IF(COUNTIF(CHILDREN(), @cell = "Ready") > 0, "Ready", "Waiting"))
2“一公式就绪状态”栏解:
=IF(COUNT(CHILDREN()) = 0, IF(COUNTIFS([一个公式行ID]:[一个公式行ID], AND(NOT(ISBLANK(@cell)),查找(@cell, ", " +替换((电子邮件保护)," FS", ",") + ",") > 0),[%完整]:[%完整],1)= COUNTIFS([一个公式行ID]:[一个公式行ID], AND(NOT(ISBLANK(@cell)), FIND(@cell, "," +替换((电子邮件保护),“FS ", ",") + ",") > 0)),“准备好了”,“等待”),如果(条件统计(儿童(),@cell =“准备好”)> 0,“准备好了”,“等待”))
-
坦纳Polzin ✭✭✭✭✭✭
多亏了@Sterling克劳福德,我意识到我可以更新我的行号公式,使它成为一个列公式。https://community.smartsheet.com/discussion/69476/row-numbers
对于我的解,它需要多一列。您需要一个列,其中每个值都是唯一的。最简单的方法是添加一个自动编号列,从1开始,然后向上。我把我的专栏命名为“自动编号”。
添加了这一栏后,下面是更新的公式。
6列解决方案(现在是7列):
专栏1:行ID
=MATCH([Auto Number]@row, [Auto Number]:[Auto Number], 0)
2列方案(现在是3列):
第1列:一个公式行ID
= " +匹配(汽车数量@row,[汽车]:汽车数量,0)+”、“
-
SJ卖家 ✭✭✭
坦纳,这太棒了。谢谢你分享你的解决方案!
我希望SmartSheet本身就能提供这个功能,因为许多日程管理工具,如Asana都有这个功能。它允许每个任务的所有者知道他们是否可以开始工作。
我刚刚在我负责的一个复杂的工作计划中实施了这一点,并将在这里报告任何观察和发现。
再次感谢Tanner解决了这个问题并分享了你的方法!!
-
马特•斯图尔特 ✭
@Tanner Polzin...很棒的解决方案!虽然我很难适应这个公式。
这在处理标准前任时很有效。然而,当与其他任何事情一起工作时,它会考虑那些“前任”是在它更改为就绪之前需要完成的,而实际上它们只是用于计时而不是真正的前任。明白吗?
例如,对于开发中的大多数任务,我都有自己的标准工作进度计划。然而,一些与销售或营销相关的任务是为了时间安排而向后工作的任务,例如,我们在几乎准备好发布产品之前不需要PO,并且在需要PO前一个月才能开始销售。ob欧宝娱乐app手机下载我们不能过早地完成这个任务,所以这是一个从产品版本开始的工作。ob欧宝娱乐app手机下载
是否有一种方法来调整Pred替换FS公式忽略非前任?
如果你能帮忙,我很感激?
-
坦纳Polzin ✭✭✭✭✭✭
如果我说错了请指正,但听起来你们有从开始到结束的前辈?你是对的,我的公式忽略了那些类型的前辈。
我相信您真正想要的是将状态设置为“就绪”时,今天的日期是在计划的开始日期之前(基于前任)?如果是这样,您不应该编辑Pred Replace FS。相反,您应该编辑Ready Status。你只需要在开始时添加一个IF语句(如果Pred Count为0,那么根据开始日期确定就绪/等待,否则做公式已经在做的事情。
这是我的建议。斜体部分是我在开头添加的IF语句(在最后加上一个括号,以结束新的IF语句。
=IF([Pred Count]@row = 0, IF(NETDAYS((电子邮件保护),今天()> 0,“准备好了”,“等待”),IF(COUNT(CHILDREN()) = 0, IF([Pred Done COUNT]@row = [Pred COUNT]@row, "Ready", "Waiting"), IF(COUNTIF(CHILDREN(), @cell = "Ready") > 0, "Ready", "Waiting")))
-
尼尔·沃森 ✭✭✭✭✭✭
@Tanner Polzin我正在使用你的方法,它对FS很有效,但是正如你上面指出的,FF, SS和SF的公式需要修改。你提到使用更多嵌套的替代公式,使其与其他前任类型一起工作,但我不能让它工作。你能详细说明一下吗?
-
坦纳Polzin ✭✭✭✭✭✭
@Neil沃森很抱歉,由于我现在的工作量,我不能帮你这个忙。此外,我发现很难为其他前身类型(FF、SS和SF)提出一个通用的解决方案。
对于正常的FS前身,对于每个人都希望它如何操作,这是相当直截了当的。只有当前一个“完成”时,后一个才“准备好”。
然而,对于其他类型的前任,我认为不同的人会想要不同的结果。以SF为例。假设Task2是Task1的后继任务,那么在Task2中,前一列是1SF。这意味着Task2应该在Task1之前完成,那么Task2什么时候可以开始呢?前任列可以将我指向Task1,但是Task1没有告诉我Task2何时准备启动。当今天的日期超过Task2的计划开始日期(我在前一篇文章中给出了解决方案)时,您可以将此自动更改为“就绪”。然而,“就绪”一栏的目的是说它可以随时工作,不管日期如何,所以我假设其他人希望它是不同的。
您需要非常清楚地定义您希望为每个其他前任类型发生什么。在此之后,我建议您实现我目前的7列解决方案。然后尝试分别修改每一列,然后再合并回3列(您可能需要添加更多列)。
-
尼尔·沃森 ✭✭✭✭✭✭
@Tanner Polzin谢谢你的真知灼见。由于我们主要只使用另一种变体(SS),所以我将使用您的多列方法,使其适用于FS和SS。