0

这是我试图解决的功能。

=IFERROR(IF(OR(B40="",B41="",B42="",C40=""),"填写表格。",IF(D40<>"",IF(AND(D40<> "",D40<"20:00"),15,IF(AND(D40>="20:00",D40<="24:59"),10,IF(AND(D40>="25:00 ",D40<="29:59"),5,IF(AND(D40>="30:00",D40<="35:00"),-5,IF(D40>"35:00", -10,""))))))),"")

背景:我正在为一组培训活动开发评分工作表。我们正在使用一些博弈论和行为经济学来鼓励培训活动中的特定行为。这是一个定时练习,看看我们的人能以多快的速度完成低绳课程(例如,激励性团队建设活动)。

“引号”中的时间戳(例如,“20:00”)是我们的人完成课程所花费的时间。这个数字是由另一个单元格生成的,该单元格计算了我们的人员开始和完成演习的时间之间的差异(例如,上午 10:45 - 上午 10:36)。

问题是在我的嵌套 IF 函数中将引号放在时间跨度周围会导致 Excel 感到困惑。我认为它将它们视为文本而不是数字。现在这是踢球者。如果我删除引号,Excel 会将某些时间跨度解释为行范围(例如,24:59)。如何让嵌套的 IF 函数将引号中的时间跨度视为时间戳而不是文本?

4

1 回答 1

1

是的,你是对的“20:00”是一个文本字符串而不是一个数字——为了让它按照你想要的方式工作,你可以执行以下任何一项操作:

  1. “强制”引号中的时间,例如“20:00”+0,或“20:00”*1
  2. 使用十进制等值 - 20 小时是 20/24
  3. 使用 VALUE 函数,例如 VALUE("20:00")

编辑:我假设“20:00”是 20 小时,是 20 分钟吗?如果是这样,您可以按照 Tony 在他的评论中建议的那样使用 TIME 函数.....或者执行上述操作,但更改为“0:20”+0 20 分钟..(“20:00”将被 excel 解释为 20小时...)

LOOKUP这是一种使用....来做同样的事情的方法。

=IFERROR(IF(OR(B40="",B41="",B42="",C40=""),"Complete the form.",IF(D40="","",LOOKUP(D40*1440,{0,20,25,30,35;15,10,5,-5,-10}))),"")

于 2012-03-06T20:52:32.933 回答