时间:2016-07-15 22:31:25

标签: excel excel-formula excel-2013

我在计算列中使用此公式,效果很好:

=IFERROR(INDEX(Allocation_of_Funds[[#Headers],[End.Nursing]:[Unassigned14]],MATCH(TRUE,INDEX(Allocation_of_Funds[@[End.Nursing]:[Unassigned14]]>0,0),0)),"")

但是这个公式给了我麻烦并在下一个计算列中表示我想要的东西(基于上一列中的值),但它返回一个#REF!错误:

=INDEX(INDIRECT("Allocation_of_Funds[[#Headers]"&"["&[@[SOURCE 1]]&"]"):[@Unassigned14],MATCH(TRUE,INDIRECT("Allocation_of_Funds[[#Headers]"&"["&[@[SOURCE 1]]&"]"):[@Unassigned14]>0,0),0)

表格设置的详细信息如下,以防有用:

我有一个包含一系列列的表,每列代表不同类型的帐户。对于每一行,这些列的任何组合都可以包含值或空格,因此我有另一组列,我想要为每条记录的非空白列标识表列标题。

SOURCE1 | SOURCE2 | SOURCE3 | ACCT1 | ACCT2 | ACCT3 | ACCT4 | ACCT5
ACCT1   | ACCT2   | ACCT4   | 500   | 300   |       | 100   | 
ACCT2   | ACCT3   |         |       | 200   | 100   |       |       
ACCT3   |         |         |       |       | 500   |       | 
        |         |         |       |       |       |       | 
ACCT3   | ACCT4   | ACCT5   |       |       | 200   | 300   | 50
ACCT1   | ACCT3   | ACCT4   | 123   |       | 332   | 100   | 

所以我需要SOURCE2列来使用SOURCE1列中的值来标识我正在寻找具有值的下一个单元格的范围的开始,从而为SOURCE2行返回该值之上的列标题值。相同的公式将应用于SOURCE3列,使用SOURCE2列的值来标识下一个范围的开始。

提前感谢你的大脑!

-Lindsay

1 个答案:

答案 0 :(得分:2)

我使用以下公式来拉取标题并将它们放在源数字下面:

=IFERROR(INDEX($D$1:$H$1,AGGREGATE(15,6,COLUMN($D2:$H2)/ISNUMBER($D2:$H2)-COLUMN($D$1)+1,RIGHT(A$1,1)*1)),"")

我假设你的桌子的左上角是A1,其中1是标题行,A-C是你的源列,D到H是帐户列。上述公式可以放在单元格A2中,并根据需要向右和向下复制。

您似乎掌握了IFERROR和INDEX功能,因此我将解释AGGREGATE功能:

=AGGREGATE(15,6,COLUMN($D2:$H2)/ISNUMBER($D2:$H2)-COLUMN($D$1)+1,RIGHT(A$1,1)*1)

AGGREGATE函数是一系列不同函数的混合体,能够忽略某些计算。另一个增加的功能是一些内置函数执行数组计算而不需要数组。

在这种特殊情况下,我选择了聚合函数15,它与SMALL函数相同。我还告诉聚合忽略使用" 6"产生错误的计算。对于数组计算,我已经要求它将它正在使用的列号除以该列的真或假结果为数字:

COLUMN($D2:$H2)/ISNUMBER($D2:$H2)-COLUMN($D$1)+1

excel数学中的True与1相同,False与0相同。无论何时单元格不是数字,它都会尝试除以零,生成错误,并被Aggregate函数忽略。这基本上生成了列号列表,这些列号满足在列中具有数字的条件。减去D1后跟+1是将确定的列号转换为帐户标题下的相对列。

聚合函数的下一部分是告诉SMALL操作需要返回按排序顺序的数字。我使用源标头中的最后一个字符来确定要返回的列号。对于SOURCE1,最后一个字符是1,所以我想要返回最小的列号。对于SOURCE2,返回第二个最小的数字。最后的* 1将字符转换为数字而不是1作为文本。

RIGHT(A$1,1)*1

如果你想使用多达9个来源,你可以。你也可以做更多的资源,但你需要修改这个公式,或者提出一种不同的方式来提供你想要返回的小列表的数量。您可以将D2:H2参考扩展为您的所有帐户,并调整D1:H1参考以覆盖您的所有帐户标题。

概念证明

enter image description here