使用索引,匹配和连接创建列表

时间:2016-05-29 18:11:05

标签: excel excel-formula concatenation

我在Excel中有一个公式,几乎可以正常工作。然而,有一部分公式,无论我尝试做什么,我似乎无法让它发挥作用。

工作公式

=IFERROR(INDEX(DDRT!$K$7:$K$158,SMALL(IF(DDRT!$K$7:$K$158<>"",MATCH(ROW(DDRT!$K$7:$K$158),ROW(DDRT!$K$7:$K$158)),""),ROW(A1))),"")

此公式将创建一个列表并忽略数组K7到K158中的任何空格,这正是我想要做的,但是,Value K是一个变量并基于列表在另一张纸上。

我有一个concatenate,它根据列表返回正确的值,工作正常。

连接公式

=CONCATENATE("DDRT!",ADDRESS(List!$E$6,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)),":",ADDRESS(List!$E$7,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)))

返回价值 - DDRT!$ K $ 7:$ K $ 158

当我尝试将两个公式组合在一起时,数组不起作用并返回错误:

非工作公式

=IFERROR(INDEX(CONCATENATE("DDRT!",ADDRESS(List!$E$6,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)),":",ADDRESS(List!$E$7,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0))),SMALL(IF(CONCATENATE("DDRT!",ADDRESS(List!$E$6,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)),":",ADDRESS(List!$E$7,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)))<>"",MATCH(ROW(CONCATENATE("DDRT!",ADDRESS(List!$E$6,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)),":",ADDRESS(List!$E$7,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)))),ROW(CONCATENATE("DDRT!",ADDRESS(List!$E$6,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)),":",ADDRESS(List!$E$7,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0))))),""),ROW(A1))),"")

Image of Returned Error Message

1 个答案:

答案 0 :(得分:2)

=IFERROR(INDEX(INDIRECT(CONCATENATE(ADDRESS($E$6,MATCH($D$3,$A$6:$L$6,0)),":",ADDRESS($E$7,MATCH($D$3,$A$6:$L$6,0)))),SMALL(IF(INDIRECT(CONCATENATE(ADDRESS($E$6,MATCH($D$3,$A$6:$L$6,0)),":",ADDRESS($E$7,MATCH($D$3,$A$6:$L$6,0))))<>"",MATCH(ROW(INDIRECT(CONCATENATE(ADDRESS($E$6,MATCH($D$3,$A$6:$L$6,0)),":",ADDRESS($E$7,MATCH($D$3,$A$6:$L$6,0))))),ROW(INDIRECT(CONCATENATE(ADDRESS($E$6,MATCH($D$3,$A$6:$L$6,0)),":",ADDRESS($E$7,MATCH($D$3,$A$6:$L$6,0)))))),""),ROW(A1))),"")

这是你的间接公式。我不得不删除工作表名称,以便我可以在excel中输入它。它没有您的错误消息。我所做的就是用间接公式包装你的连接公式。

=INDIRECT(CONCATENATE("DDRT!",ADDRESS(List!$E$6,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0)),":",ADDRESS(List!$E$7,MATCH(Transmittal!$D$3,DDRT!$A$6:$L$6,0))))