如果值等于1,则复制单元格数组

在这里输入图像说明 我正在查看单元格A2:A201的值为1.创build一个数组列表的所有项目包含1与单元格E和B的内容的每一行。

我目前使用的方式不是一个真正的干净的版本,所以我想简化

=INDEX(tbl,SMALL(IF((INDEX(tbl,,12,1)<=1)*(INDEX(tbl,,12,1)>=1),ROW(tbl)-MIN(ROW(tbl))+1,""),ROWS($T$14:T14)),,1) 

虽然这样做,我试图简化,使它看起来更好,而不是创build多个表更经常使用。

另外,我正在使用上面的方法来得到玩家的位置(单元格e)(单元格b)。 输出是乱序,所以我真的很喜欢把他们为了运动。 PG名称,PG名称,SG名称,SG名称,SF名称,SF名称等

如果你想在视觉上简化公式,那么可以消除的最大部分是ROW(tbl)-MIN(ROW(tbl))+1 。 这将产生tbl中位置,而不是工作表上的实际行。 通过在第二行开始tbl ,你必须做这个计算。 如果你只是在第一行开始tbl ,那么这将成为ROW(tbl)因为ROW(tbl) 内的行将总是匹配工作表上的行,并且不必因为不同的起始位置而被调整。

为了从第一列和第二列,第三列等中得到匹配,需要提供循环计算。 无论您使用数组公式还是提供类似数组的计算函数,您都希望将处理的行数降至处理所需的最小值。

你可以用一个命名的范围(例如tbl )来做到这一点,然后你必须切断各列查找的列。 如果数据发生变化,您还必须维护和调整tbl 。 这可以通过用一个公式定义tbl来避免,这个公式将行减less到列A中find的最后一个数字。

 =Sheet1!$A$1:INDEX(Sheet1!$E:$E, MATCH(1e99, Sheet1!$A:$A)) 

处理tbl中的列时,可以使用INDEX函数 “切分”列。 将row_num留空(或0 )以指示所有行并提供要处理的column_num

TBL_INDEX

较新的AGGREGATE¹函数可以快速检索第一个,第二个,第三个等匹配到一个或多个列。 使用SMALL子function (即15 ),强制和不匹配到$DIV/0! 错误状态,而使用6选项忽略错误。

在检索过程中“即时”sorting数据是可能的,但更好的解决scheme需要一个“帮手”栏。


¹AGGREGATEfunction是在Excel 2010中引入的。它在早期版本中不可用。