你能帮忙解决上述问题吗?基本上,我试图根据组织内的其他人名自动化名单。即约翰史密斯是一名经理,我想要归还约翰史密斯的每一个人。所以,我的公式如下:
=IFERROR(INDEX(Sheet1!B:B,SMALL(IF(Sheet1!A:A=$AF$34,ROW(Sheet1!B:B)-MIN(ROW(Sheet1!B:B))+1),COLUMNS($AF$34:AF34))),"")
Sheet1!B:B
是员工所在的地方,Sheet1!A:
A是经理所在的地方。当我按下control shift并输入时,它会起作用并返回正确的值。然而问题是,我说John Smith下有10个人,而下一个经理是Dave T,这个名单会继续下去并且在Dave下自动填充人员,当我希望它返回"" IFERROR
中提供的值(假设它们不属于约翰史密斯)。为此,我将+1添加到:
...(Sheet1!B:B))+1),COLUMNS...
即
...(Sheet1!B:B))+2),COLUMNS... ...(Sheet1!B:B))+3),COLUMNS...
这让我疯了,你能帮忙吗?
谢谢,科林。
答案 0 :(得分:0)
首先,如果出于性能原因,最好避免使用INDEX
公式的整列,但如果这是您唯一的公式,那么您应该没问题。
现在,当您索引整个列时,您不需要偏移行结果(在我的示例中,我从第1行开始索引,因此再次无需偏移)。此外,您希望一次只进行一次小更新,最常见的是ROW(1:1)
[垂直拖动]或COLUMN(A:A)
[水平拖动]您的方法也可以,但人们很懒惰喜欢保存字符:
=IFERROR(INDEX(Sheet1!B:B,SMALL(IF(Sheet1!A:A=$AF$34,ROW(Sheet1!B:B)
-MIN(ROW(Sheet1!B:B))+1)
,COLUMNS($AF$34:AF34))),"")
基本上你的公式适用于水平拖动但不适用于垂直拖动,它总是会产生数组中的第一个行号...
=IFERROR(INDEX($B$1:$B$11,SMALL(IF($A$1:$A$11=$AF$34,ROW($B$1:$B$11)),ROW(1:1))),"")
Ctrl + Shift + 输入(公式栏)
答案 1 :(得分:0)