返回特定日期的相同Vlookup。
基本上我想做的是一个项目跟踪者。当他们做一个项目时,他们会花一定的时间在上面。这一切都很好,直到项目暂停并重新启动,我有一个问题,它计算出最接近的日期。所以我试着做的是,如果项目开始和结束在同一天,它会使用那个日期。
附件是我的原稿照片。你会看到它的填充物
看看小时是怎么变成负小时的。(项目开始时间/日期是从另一张表格中提取的)。在上面的照片中,它使用了简单的公式=VLOOKUP([项目编号]。[3,{系统表1范围2},4,假)
因此,为了纠正这个问题,我使用了这个公式
=IF(AND(LEFT([Project Finish Time txt/Date] 3,2) = LEFT({System Sheet 1 Range 4}, 2), VLOOKUP([Project No. 2])3, {System Sheet 1 Range 2}, 1, false) = [Project No.]3), VLOOKUP([Project No.][3,{系统表1范围2},4,假)) what i am trying to do in this formula is if the project started on the same date it ended uses that date to calculate the hours. Not the new date generated when the boys press start project again the next day. And the project no.s match
我得到了#无效数据类型
什么好主意吗?
为我糟糕的语法道歉
最好的答案
-
克莱夫·华莱士 ✭
凯莉,
我是澳大利亚人,所以日期不一样,我们今天读的是2020年4月5日。这就是为什么我试图使用LEFT(REF,2),因为前两个数字是我们在一个月中的一天。
对于公式
=MAX(COLLECT({System Sheet 1 Range 4}, {System Sheet 1 Range 5},[项目编号:@row,{系统表1范围4},<[项目完成时间txt/日期]@row)) + ""
得到0。
=MAX(COLLECT({System Sheet 1 Range 4}, {4/4/20 System Sheet 1 Range 5},[项目编号:@row,{系统表1范围4},<[项目完成时间txt/日期]@row)) + ""
我得到#无效ref
所以澄清一下,我想从某个匹配的项目中获得时间。这是在同一天开始和结束的。
例如,你正在建造一艘小船。这个项目可能会持续三周,所以每天你都要输入项目编号,然后输入到表格上。您不希望它在一天结束后计算出小时数,因此您再次输入项目编号并按“结束”。这将自动计算该项目当天的工作时间。但是,当您第二天再次开始相同的项目时,它会自动使用创建的时间来计算昨天的开始时间,而不是前一天早些时候的开始时间。很难解释。
-
卡里。 员工
克莱夫,
我为混乱道歉,因为我似乎没有在我之前的帖子中正确编辑所有内容。好消息是,我的MAX/COLLECT公式不依赖于日期格式。但是,它确实假设在{System sheet 1 Range 4}引用的工作表上有一个已创建(日期)列,并且“项目开始时间/日期”基于已创建(日期)列。如果是这种情况,您可以使用MAX/COLLECT by:
- 创建一个只引用名为{项目开始日期}的已创建(日期)列的交叉表
- 创建一个只引用“项目编号”列的交叉表,名为{项目编号}。
- 在“项目开始时间/日期”列中添加如下公式:=MAX(COLLECT({项目开始日期},{项目编号;},[项目编号:@row,{项目开始日期},<[项目完成时间]@row)) + ""
请注意,此处引用的是工作表中的“项目完成时间”一栏,而不是“项目完成时间Txt/日期”。此外,我已经发布了我的测试表与编辑权限在这里:
- 源表:https://app.smartsheet.com/b/publish?EQBCT=f8f5289bde7f430d977c4036c962266e
- 目标表:https://app.smartsheet.com/b/publish?EQBCT=24cf6aac34074731bd29cd3b3ee2ab37
如果这对你不起作用,一个带有开始日期的工作表的屏幕截图,突出显示你想要包括在项目开始时间/日期列中的信息将会很有帮助。
答案
-
卡里。 员工
克莱夫。你好!
如果我想对了,您应该返回系统列中的“最大”日期,该日期小于特定项目行中系统列中的日期。首先可以使用COLLECT将具有相同项目编号和项目开始日期在项目完成日期之前的所有行聚集在一起。然后,您可以使用MAX来查找“最高”或最近的值。在我的试卷上,下面的公式是有效的:
=MAX(COLLECT(当天查找项目开始时间/日期)},{4/4/20当天查找源项目编号。},[项目编号:@row,{当天查找项目开始时间/日期},<[项目完成时间/日期]@row)) + ""
{同一天查找项目开始时间/日期}是源工作表上具有开始时间/日期的系统列。
{当日查找源项目编号。}为项目编号。列。
+ ""用于将结果转换为文本。
在本例中使用COLLECT的好处是,您可以在希望通过指定人员筛选的事件中添加额外的范围和列。
-
克莱夫·华莱士 ✭
凯莉,
我是澳大利亚人,所以日期不一样,我们今天读的是2020年4月5日。这就是为什么我试图使用LEFT(REF,2),因为前两个数字是我们在一个月中的一天。
对于公式
=MAX(COLLECT({System Sheet 1 Range 4}, {System Sheet 1 Range 5},[项目编号:@row,{系统表1范围4},<[项目完成时间txt/日期]@row)) + ""
得到0。
=MAX(COLLECT({System Sheet 1 Range 4}, {4/4/20 System Sheet 1 Range 5},[项目编号:@row,{系统表1范围4},<[项目完成时间txt/日期]@row)) + ""
我得到#无效ref
所以澄清一下,我想从某个匹配的项目中获得时间。这是在同一天开始和结束的。
例如,你正在建造一艘小船。这个项目可能会持续三周,所以每天你都要输入项目编号,然后输入到表格上。您不希望它在一天结束后计算出小时数,因此您再次输入项目编号并按“结束”。这将自动计算该项目当天的工作时间。但是,当您第二天再次开始相同的项目时,它会自动使用创建的时间来计算昨天的开始时间,而不是前一天早些时候的开始时间。很难解释。
-
卡里。 员工
克莱夫,
我为混乱道歉,因为我似乎没有在我之前的帖子中正确编辑所有内容。好消息是,我的MAX/COLLECT公式不依赖于日期格式。但是,它确实假设在{System sheet 1 Range 4}引用的工作表上有一个已创建(日期)列,并且“项目开始时间/日期”基于已创建(日期)列。如果是这种情况,您可以使用MAX/COLLECT by:
- 创建一个只引用名为{项目开始日期}的已创建(日期)列的交叉表
- 创建一个只引用“项目编号”列的交叉表,名为{项目编号}。
- 在“项目开始时间/日期”列中添加如下公式:=MAX(COLLECT({项目开始日期},{项目编号;},[项目编号:@row,{项目开始日期},<[项目完成时间]@row)) + ""
请注意,此处引用的是工作表中的“项目完成时间”一栏,而不是“项目完成时间Txt/日期”。此外,我已经发布了我的测试表与编辑权限在这里:
- 源表:https://app.smartsheet.com/b/publish?EQBCT=f8f5289bde7f430d977c4036c962266e
- 目标表:https://app.smartsheet.com/b/publish?EQBCT=24cf6aac34074731bd29cd3b3ee2ab37
如果这对你不起作用,一个带有开始日期的工作表的屏幕截图,突出显示你想要包括在项目开始时间/日期列中的信息将会很有帮助。
-
克莱夫·华莱士 ✭
太棒了,起作用了,谢谢
-
卡里。 员工
太好了!很乐意帮忙!