Excel 中陷入一种情况

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

我在sheet1中的excel“变体”中有一列,其中不包含。 A 列中的零件。这些部分是剩余部分,留待分配给分析师。

另一个sheet2有两列“Analyst”,“count”。分析师包含分析师姓名或我的团队名称,计数包含他们已分配的不同部分的数量。像下面这样

现在我想将 Variant 列中的剩余部分分配给我的分析师,以使计数相等。 以下是我的预期输出

看到我只将一个零件分配给sheet1中的下颌,因为它已经计数2,而剩下的分析师得到了3个零件来匹配相等的计数

我尝试了以下步骤 步骤1 在 Sheet2 的单元格 C2 中,输入公式 =MAX(0, B2-COUNTIF(Sheet1!A:A, A2))。将此公式向下拖动以供所有分析师使用。

步骤2

在 Sheet1 中,在单元格 B2(第一个变体旁边)中输入以下公式 =IFERROR(INDEX(工作表2!A:A,MATCH(MIN(工作表2!$C$2:$C$5),工作表2!$C$2:$C$5,0)),"")

步骤3 在 Sheet2 的单元格 B2 中,输入公式 =B2+COUNTIF(Sheet1!B:B, A2)。将此公式向下拖动以供所有分析师使用。

但它没有给我我所期待的。

vba excel-formula excel-2010
1个回答
0
投票

您可以使用 REDUCE 来计算每次使用哪个名称。

=DROP(REDUCE("",A2:A13,LAMBDA(x,y,LET(z,BYROW(C2:C5,LAMBDA(v,SUM(N(v=x)))),VSTACK(x,TAKE(TOCOL(IFS((D2:D5+z)=MIN((D2:D5+z)),C2:C5),2),1))))),1)

它会逐行检查您范围内以及公式本身结果中分析师姓名的计数。

A2:A13
是您需要分配的值的范围。该范围实际上并未在公式中使用,但该范围的单元格数量用于循环 REDUCE lambda,其中
x
将是公式堆叠的重复结果。

因此,在第一个计算中,它会检查起始值中使用的分析师姓名

C2:C5
的计数(无/
""
)。当然,每个名称的结果都是
0

然后将此计数加到当前计数

D2:D5
。等于数组最小值的第一个值用于返回关联名称。这是第一次计算的结果。

然后循环回到第二个计算,该计算检查先前堆叠的计算结果中使用的分析师姓名的计数。 不,它会为之前计算的名称返回 +1。 当检查分析师姓名的最小数量时;该计数将添加到现有值中,并且使用最少的名字会被选中,等等。

© www.soinside.com 2019 - 2024. All rights reserved.