如何使用“如果包含”?

问题描述 投票:0回答:2

我正在尝试为工作制作一个调度程序,并且我有一个下拉列表,列出了员工在一列中工作的小时数,我希望它显示它旁边的小时数。即:

Column B (Selected from a drop down menu)   Column C  
6:00 - 14:30                                to display 8 as it is an 8 hour shift   
10:00 - 15:00                               to display 5 as it is an 5 hour shift

有没有办法做到这一点?

google-sheets google-sheets-formula
2个回答
0
投票

因此,为了清楚起见,我将在几个专栏中逐步开发。这些可以组合成一个难以理解的公式,但这不会帮助你遵循。您可以按照我的建议进行操作,然后通过计算隐藏列。假设您的时间在A列中。您可以在第一行中执行以下操作(我假设第1行,如果您有标题,可能是第2行),然后将公式复制下来。在B栏中,我放置了=search("-",A1),它告诉了 - 符号的位置。在C列中,我第一次发现=left(A1,B1-2)是一个字符串,它在破折号之前将第一个字符取为2。在D栏中,我有=mid(A1,B1+2,5),它从短划线后的2个字符到最后(如果它只有4个字符长,它复制4个而不是5个),最后在E列中我们用=HOUR(timevalue(D1)-timevalue(C1))找到所需的结果。这就是你所要求的。如果你想添加分钟,你可以使用=MINUTE(timevalue(D1)-timevalue(C1))。最后,如果存在22:00 - 6:00的墓地转移,则需要为其添加逻辑。您还可以使用公式=split(A1,"-")在列B中简化字符串计算,然后放入=HOUR(timevalue(C1)-timevalue(B1))

因此,如果你真的想要一个单一的公式,它可能是=hour(INDEX((split(A1,"-")),2)-INDEX((split(A1,"-")),1)),它从第二部分减去第一部分并转换为小时。

如果你想在午夜时分处理缠绕,=iferror(hour(INDEX((split(A1,"-")),2)-INDEX((split(A1,"-")),1)),24-hour(INDEX((split(A1,"-")),1)-INDEX((split(A1,"-")),2)))应该可以做到这一点。

更新:表格识别分裂所导致的时间。因此,如果在B1中你放置=split(A1,"-"),如果你愿意保留分钟,D1可以包含=C1-B1。它甚至可以在22:00 - 2:00给出正确的答案。


0
投票

制作一个带有移位列的表(如果您选择该方法,可以是用于验证的列表),并在相应移位持续时间的右侧立即生成一列。我把那张桌子命名为Larry。然后在C2中(假设您的第一个下拉列表是B2):

  =ArrayFormula(vlookup(B1:B,Larry,2,0))
© www.soinside.com 2019 - 2024. All rights reserved.