我希望能够输入任何Dept#
代表单元格D2,并且已经在单元格A11,A12,A13等中有一个公式,它将自动填充Subaccount
个数字,基于Dept#
输入。每个单元一个Subaccount
。示例:
一直在看COUNTIF阵列似乎仍然无法弄明白,或者甚至可以在不使用VBA的情况下使用。
请注意我不使用数据透视表,也不使用带有下拉菜单的列表。此外,样本上的单元格F1到H7将位于另一个选项卡上,数据表会更大,列数更多。
答案 0 :(得分:2)
OP明确指出“我不使用数据透视表”,但一般观点似乎是“走的路”:
答案 1 :(得分:1)
有可能,我认为您最好使用Index()
,Match()
,Small()
和Row()
。这是一个混乱,这是你在A
开始的A11
栏中使用的内容:
{=INDEX($G$2:$G$9,MATCH(SMALL(IF($F$2:$F$9=$D$2,$F$2:$F$9,MAX($F$2:$F$9)+1)+
ROW($F$2:$F$9)/100000,ROW()-10),$F$2:$F$9+ROW($F$2:$F$9)/100000,0))}
注意:我忘了提及上面的 NEEDS 作为数组公式输入。
<强>结果:强>
说明:请记住以下说明的步骤是虚拟的。
第一步是只保留感兴趣的部门,并将其他部门设置为比列表中任何其他部门更大的其他部分。我使用了Max() + 1
。不能在单元格中使用以下内容。
IF($F$2:$F$9 = $D$2, $F$2:$F$9, MAX($F$2:$F$9) + 1)
更改 Dep#的列表,因此使用current_row_number / 100000
时没有相同的内容。
... + ROW($F$2:$F$9) / 100000
如果您在第11行,这将是第一个有效的部门编号(如果在ROW()-10
中A11
会给您1),现在列表中有行号,第一个将是第2行。Small()
函数将为您提供最小的x:
{=SMALL(IF($F$2:$F$9=$D$2,$F$2:$F$9,MAX($F$2:$F$9)+1)+
ROW($F$2:$F$9)/100000,ROW()-10)}
使用Match()
现在可以获取x值的行。
{=MATCH(SMALL(IF($F$2:$F$9=$D$2,$F$2:$F$9,MAX($F$2:$F$9)+1)+
ROW($F$2:$F$9)/100000,ROW()-10),$F$2:$F$9+ROW($F$2:$F$9)/100000,0)}
现在,您所有相关部门的行都使用Index
函数检索相应的子帐户。
{=INDEX($G$2:$G$9,MATCH(SMALL(IF($F$2:$F$9=$D$2,$F$2:$F$9,MAX($F$2:$F$9)+1)+
ROW($F$2:$F$9)/100000,ROW()-10),$F$2:$F$9+ROW($F$2:$F$9)/100000,0))}
答案 2 :(得分:0)
不确定这是多功能的,但对于提供的样本似乎没问题,所以至少可能是您愿意接受的指针:
在A11
中输入=VLOOKUP($D$2,F1:$G$8,2,FALSE)
(根据您的表位于其他标签上进行调整)。这假设每个部门#总会至少有一个子帐户,因此比A12
的公式(要复制到A19
)稍微简单一些:
= IFERROR(VLOOKUP($ D $ 2,INDIRECT(“F”&amp; MATCH(A11,G:G,0)+ 1&amp;“:$ G $ 8”),2,FALSE),“”)
我认为这证明了您的要求可以得到满足,但我承认可能需要进行一些调整。
答案 3 :(得分:0)
我的另一个答案似乎适用于@glh使用的样本数据,所以希望两者都可行!但是你(在我看来明智地)对建议开放,我会说比这两个答案中的复杂公式更好的是建立一个单独的表,比如Row1每个Dept#在一个单独的列中,在每个Dept#enter下面(主要是一个'一次性')该部门的每个可能的子帐户。然后填充A11:A19
将非常更容易,我认为你会有更好的控制权,因为这将基于预期的组合而不是实际的组合。
但我的偏好仍然可能是数据透视表。