如何在溢出数组中加入扩展单元格范围的文本?

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

我正在制定每日时间表,分配员工处理客户电话 (C) 或电子邮件 (E)。我想将规则应用到表中的 C/E 分配,这样管理人员就不必自己进行调整。

在我的 WIP 计划中有 4 个部分 A 到 D;

  • A - 员工数据,包括姓名、开始/结束时间、休息时间、技能等
  • B - 助手“表”根据它之前的一小时处理规则,并提供每个员工每小时的数字结果
  • C - 时间表“表”将 Cs 分配给除获得 Es 的最低结果的员工之外的所有员工
  • D - 包含为 B 部分中处理的每个规则添加或减去的数量

我已经链接了下面时间表的简化示例的屏幕截图。 B 部分已拆分显示 B1 和 B2 以帮助显示正在发生的事情。

B 部分中的公式首先确定员工是否在他们的工作时间内,这个单一公式会溢出整个范围,包括一天中每个小时的所有员工 [截图中的B1]。

现在假设一个规则是每个员工每天只收到 3 小时的电子邮件 (E)。我计划这样做的方式是让 B 部分加入所有小时的文本,直到正在处理的小时 [截图中的B2],从中可以计算出 E 的数量。如果 Es 的数量等于 3,则将 10 添加到该员工的“分数”。如果其余员工的得分为零,则 C 部分会将 E 分配给其中一名员工,并为得分为 10 的员工分配 Cs。

在我遇到这个问题之前,其他规则都进行得很顺利,我认为如果员工在那个时间工作,那么工作的溢出范围就是问题所在。

我想要的结果显示在 B2 但我得到的是 X 它将整个范围的文本从左到右,从上到下连接起来。

我知道在 Excel 365 中使用 @,但是我使用的是 Mac OS 设备,它无法运行。然而,最终产品将在 Windows 上运行,但我更喜欢 Mac 设置来完成这种工作。

备注:

  1. 假设两个或多个分数相同的地方,E将按员工姓名的字母顺序分配,
  2. 我决定反对 COUNTIF() 因为有多个规则,处理一个连接文本似乎比计算这个和那个更容易,
  3. 我更愿意保留溢出数组,因为将它拖过许多列/行很麻烦,尤其是在开发它时,
  4. 没有 VBA 或宏(被 IT 禁止),
  5. 没有不稳定的功能,
  6. 这是在现有软件包之间进行调度的一个选项,也是我喜欢解决的那种难题,但我遇到了我的对手!

截图:

我已经尝试了很多公式,我得到的最接近的公式逐行执行我想要的,但是当我将该公式文本引入生成溢出数组的公式时,它加入了整个范围,如X所示 我找不到阻止它的方法。

例如;

=INDEX(SCAN("",RotaRange,(LAMBDA(a,v,a&v))),1,)

可以很好地向下拖动多行,但在溢出数组中它会连接所有内容。

我尝试了太多的组合来列出它们,但它们以各种形式包含了以下一个或多个函数:index()、take()、chooserows()、row()、rows()、hstack()、 makearray(), match(), xlookup(), find(), textjoin(), concat(), scan() 等等我确定。

我在这上面花的时间比我愿意承认的要多,我经历了 SO,谷歌,正如你所期望的,还有我自己的测试和实验,但我无法通过这个!

excel excel-formula array-formulas
1个回答
0
投票

减少/扫描

=LET(range,RotaRange,
    DROP(REDUCE("",SEQUENCE(ROWS(range)),LAMBDA(rRes,rr,
VSTACK(rRes,SCAN("",INDEX(range,rr,0),LAMBDA(sRes,sVal,sRes&sVal))))),1))

可能,您需要删除

RotaRange
的最后一列:

=LET(range,Drop(RotaRange,,-1),
    DROP(REDUCE("",SEQUENCE(ROWS(range)),LAMBDA(rRes,rr,
VSTACK(rRes,SCAN("",INDEX(range,rr,0),LAMBDA(sRes,sVal,sRes&sVal))))),1))
© www.soinside.com 2019 - 2024. All rights reserved.