数据:
我正在尝试在 Excel 中创建资源分配文件,数据结构如下:
角色 | 人 | 第 1 周可用性 |
---|---|---|
A | 莎拉 | 3 |
A | 约翰 | 3 |
A | 比尔 | 2 |
A | 艾米丽 | 0.5 |
A | 利亚 | 0.5 |
A | 迈克 | 0.25 |
目标:
举例来说,对于我的项目的第一周,我总共需要完成 7 个小时的工作。我需要选择哪些员工可以满足此配额。我们可以通过肉眼看到 Sarah、John、Emily 和 Leah 总共有 7 个小时的可用时间,但我正在尝试编写一个公式来将这些名字一起调用。
之前的想法#1:求和与偏移
我首先尝试创建一个复杂的函数,使用 SUM 和 OFFSET 来创建连续总和,每次递增一个人,直到达到 7 或超过 7。公式将从 Sarah 的可用性 3 开始,然后添加 John 的可用性3(总共 6),然后加上比尔的空闲时间 2(总共 8),然后停下来告诉我我已经达到了 8 小时。 缺点:这显然并不完美,因为我们知道有一个现有的组合可以使我们恰好达到 7,但因为我是按顺序求和的,所以公式没有考虑到这一点。
之前的想法#2: XLOOKUP 和 LARGE
意识到我的第一次尝试存在位置限制,接下来我尝试将 LARGE 函数与 XLOOKUP 结合使用来创建不一定基于物理位置,而是基于 rank 的总和。该公式将首先从所需的内容中减去最大的可用性(7 - 3,在我们的示例中),如果该值 > 0,它将使用 XLOOKUP 调用该名称,然后进一步从所需的内容中减去第二大的可用性。 缺点:公式的延续是我的问题。我想说“如果 7 减去最大可用性大于 0,则减去第二大可用性。如果仍大于 0,则减去第三大可用性,依此类推。例如,如果减去第三大可用性小于 0,然后减去第四大可用性,并检查它是否仍高于 0,等等。
我如何解决前两次尝试以达到我想要的结果?或者是否有更好的解决方案?! 请注意,一旦我弄清楚了逻辑,我将寻求实现一些宏来自动化此过程的某些部分。
谢谢!