Excel公式编写求助:根据工作时长分配团队总支付工时
Excel公式编写求助:根据工作时长分配团队总支付工时
嗨,我完全懂你现在的困惑——要把团队的总支付工时,根据每个技术的实际工作时长合理分配到个人,这个逻辑确实需要捋清楚。
先帮你明确核心逻辑:你需要按每个技术的有效工作时长(最多算8小时)的比例,来分配固定的团队总支付工时。当所有人都满8小时工作时,比例是1:1:1,自然就会平均分配(比如总支付30的话,每人10小时),刚好符合你提到的场景。
接下来给你具体的Excel公式方案,假设:
- 团队总支付工时放在单元格
$D$1(比如这里输入30) - 三位固定费率技术的实际工作时长分别在
A2、B2、C2单元格
那么,计算技术A的支付工时可以用这个公式:
=($D$1 / SUM(MIN(A2,8), MIN(B2,8), MIN(C2,8))) * MIN(A2,8)
我给你拆解下公式的作用:
MIN(A2,8):把该技术的实际工作时长限制在8小时以内,超过8的部分不算入分配基数SUM(...):算出三位技术的有效工作时长总和$D$1 / SUM(...):得到每1小时有效工时对应的支付工时分摊系数- 最后乘以该技术的有效工时,就是他应得的支付工时
咱们用你提到的场景验证下:
场景:三位技术都工作了8小时,总支付工时30
有效工时总和 = 8+8+8=24
分摊系数 = 30/24=1.25
每人支付工时 = 8×1.25=10,完全符合你的预期
再举个有差异的场景,比如技术A工作8小时、B工作6小时、C工作4小时:
有效工时总和=8+6+4=18
分摊系数=30/18≈1.6667
A的支付工时≈13.33,B≈10,C≈6.67,加起来刚好是30,逻辑通顺
如果担心出现“所有人都没工作”导致的除零报错,可以给公式加个错误处理:
=IFERROR(($D$1 / SUM(MIN(A2,8), MIN(B2,8), MIN(C2,8))) * MIN(A2,8), 0)
这样当总有效工时为0时,会直接返回0,避免公式报错。
备注:内容来源于stack exchange,提问作者Hans Riegner




