让我先说这个答案,我也不认为这是解决这个问题的一种有效方法,更不用说最有效的方法了,而且它肯定也不是直截了当的。不过,我应该说得比这更强烈,以免造成混淆:这不是解决这个问题的好方法!有了这个,我无法抗拒这个挑战。
我将尝试发布足够的详细信息,以便您复制我的 Excel 文件。
如果不明显,这可以扩展到原始员工表中带有“+”的行数。您将从放入原始表格开始。然后,更新下面显示的两个范围名称以获取所有员工和所有数据。跳过一行,粘贴 '1' 到 '31' 的行,然后粘贴两个主要公式(即从单元格 A9 和 B9 开始的公式>) 在下面的行中,确保将任何对第 8 行和第 9 行的引用替换为新适用的起始行,然后向下拖动到所需的行数,以便通过最后一行原始数据获取优势!如果您想看到 B/M/E/N(开始、中间、结束、下一个)的配色方案自动出现(可选步骤),请在整个范围内添加条件格式。然后,在 B/M/E/N 部分下方创建一个相同大小的部分,以放入您的“如果 'M' 则 '+' 否则为空白”公式。
这是我创建的示例文件中的网格屏幕截图:
您需要创建以下命名范围:
或者,如果您想看到图片中的颜色自动出现,您可以创建以下条件格式:
(您可能会发现在放入公式后放入条件格式更容易,但如果您想提前放入,请确保仅在该部分粘贴特殊公式)
现在,命名范围已就位,下面是要放入工作表网格的内容:
第 1 步:将数据硬编码到第 8 行。
第2步:在单元格A9中输入以下公式并向下拖动到单元格A22
=IF(B8=1,INDEX(rngEmps,1),IF(COUNTIF(OFFSET(rngData,MATCH(A8,rngEmps,0)-1,,1,),"+")=COUNTIF(OFFSET($B$8:$AF8,MATCH(A8,$A$8:$A8,0)-1,,COUNTA($A$8:$A8)+COUNTBLANK($A$8:$A8)-(MATCH(A8,$A$8:$A8,0)-1),),"M"),INDEX(rngEmps,MATCH(A8,rngEmps,0)+1),A8))
第3步:在单元格B9中输入以下公式,然后左右拖动到单元格AF22
=IF($A9=$A8,IF(OR(B8="B",B8="M"),"B",IF(B8="E",IF(A9="B","B","E"),IF(OR(A9="B",A9="M"),"M","N"))),IF(B$2=1,IF(INDEX(rngData,MATCH($A9,rngEmps,0),1)="+","M","B"),IF(INDEX(OFFSET(rngData,MATCH($A9,rngEmps,0)-1,,1),1,B$8)="+",IF(OR(A9="E",A9="N"),"N","M"),IF(A9="B","B","E"))))
拉格纳,如果你在任何地方遇到困难,请告诉我。另外,我猜你可以用“+”重新创建底部。
更新/编辑:我昨晚(2019 年 10 月 23 日)发布的主(单元格 A9)公式中有一个小错误,它没有正确处理第一个列是“+”;现在应该修复。另外,总的来说,我没有花时间彻底优化这些公式(例如,尽可能减少重复工作,确保安排 IF 语句的理想顺序等)。这意味着更多的概念证明。如果您在我的解决方案中发现错误,请发表评论。谢谢!