excel 中计算连续余数的具有挑战性的公式

Challenging Formula in excel to calculate successive remainder

我正在尝试找到一个公式,该公式将根据完成任务所花费的时间计算出津贴金额。

这是一个示例,在单元格中:

A1:我的津贴值为 150(不会改变)

B1:我有时间完成任务

C1:我想要一个公式 return 一个基于以下标准的值

标准 1:6 小时或更少 return 津贴的 20% =IF(AND(B1>=0.01,B1<=5.99),A1*0.2,"")

标准 2:6 小时到 12 小时之间,return 津贴的 50% =IF(AND(B1>=6,B1<=11.99),A1*0.5,"")

条件 3:12 小时到 24 小时之间,return 100% 的津贴 =IF(AND(B1>=12,B1<=23.99),A1*1,"")

标准 4:前 24 小时,100% 的津贴,每连续 12 小时增加 50% 的津贴(在前 24 小时的 100% 之上)

如果可能的话,我想要一个公式来将所有这些条件都包含到 C1 单元格中。如您所见,我有前三个标准的公式,但没有最后一个。

如果有人能提供帮助就太好了。非常感谢 :)

抗体

随着时间 运行 在 A 列下,将此公式放入 B 列。

=(LOOKUP(A2*24, {0,0.1,6,12}, {0,0.2,0.5,1})+CEILING(MAX(A2-1.5, 0), 0.5))*150

根据需要填写。我试图尽可能地隔离 150.00 美元。将其放入单元格(例如 Z1)并引用它应该很容易,而不是将数量硬编码在(例如 ...*$Z

我用下一个条件替换了每个 IF 语句中的 FALSE 条件。如果前三个条件为 FALSE,它会假定您已超过 24 小时并运行条件 4.

=IF(AND(B1>=0.01,B1<=5.99),A1*0.2,IF(AND(B1>=6,B1<=11.99),A1*0.5,IF(AND(B1> =12,B1<=23.99),A1*1,A1*1+A1*ROUNDUP((B1-24)/12,0)/2))))

根据时间升级分配

我发布这些解决方案是为了让可能参考此问题的用户受益。

让我们首先验证问题中提供的标准,因为标准的描述与提供的公式之间存在一些差异,因此优先考虑公式,因为已确认它们是正确的.

图1

愿validate\highlight三分自table:

我。一旦有时间报告,最低津贴率为 20% (即 Time > 0

二。如果 Time > 24 小时和 Time < 36 小时,津贴率为 100%

三。如果 Time >= 48 小时和 Time > 60 小时津贴率为 200% (前 24 小时 100% + 每连续 12 小时 50%)

虽然,当被问及

whether the times to be used as criteria are actual times or integers and mixed numbers representing hours

用户“确认”

“there are actual times”

似乎不​​是,因为用户后来承认如果时间表示为 “实际时间” 则无法提供正确结果的公式是正确的.图 2 显示了以两种方式表示的时间。

图2

解决方案

您将在下面找到适用于每种格式的公式。

使用与示例中提供的不同的参考文献,以便显示表达 Time 的两种方式及其解决方案。根据需要更改引用。

假设 150 的津贴基数位于 C2

  1. Time的解表示为Double (见图3)

一个。嵌套 IF 公式:在 C8 处使用 TimeE8

中输入此公式
    =$C
    * SUM( IF( $C8 <= 0, 0,
    IF( $C8 < 6, 20%,
    IF( $C8 < 12, 50%, 100% ))),
    MAX( INT( $C8 / 12 ) - 2, 0 ) * 50% )

b。基于 Jeeped 解决方案的公式:在 C9 处使用 TimeE9

中输入此公式
    =$C
    * ( LOOKUP( ROUND( $C9, 2 ), {0,0;0.01,0.2;6,0.5;12,1} )
    + CEILING( MAX( ( $C9 / 24 ) - 1.5 + 0.0001, 0 ), 0.5 ))

图3

  1. Time的解表示为Actual Time (见图4)

(1 的变化是 Time 乘以 24 将其转换为双精度)

一个。嵌套 IF 公式:在 C13 处使用 TimeE13

中输入此公式
    =$C
    * SUM( IF( $C13 * 24  <= 0, 0,
    IF( $C13 * 24  < 6, 20%,
    IF( $C13 * 24  < 12, 50%, 100% ))),
    MAX( INT( $C13 * 24  / 12 ) - 2, 0 ) * 50% )

b。基于 Jeeped 解决方案的公式:在 C14 处使用 TimeE14

中输入此公式
    =$C
    * ( LOOKUP( ROUND( $C14 * 24, 2), {0,0;0.01,0.2;6,0.5;12,1})
    + CEILING( MAX( $C14 - 1.5 + 0.0001, 0 ), 0.5 ))

图4