基于查找连接范围中的值

时间:2017-04-26 19:39:44

标签: excel excel-formula

我正在为多个阶段的项目制定预算。有可能不是所有阶段都会被处理,所以我添加了一些查找和SUMIF公式,以便我可以得到我的包含和排除的努力和美元金额的摘要。一切正常。现在我想隐藏我的查找行(第1行),但仍然有办法确定项目的哪些阶段被包含在内,哪些阶段被排除在外。显然我可以手动将它们连接在一起,但是如果包含/排除的阶段发生了变化,那么我需要记住更新这些公式(并且它不像在公式中所做的那样有趣)。这是我的工作表的样子:

Table Layout TEXTJOIN函数看起来应该可以工作(即=TEXTJOIN(CHAR(10), TRUE, C2:N2)),但是我无法理解如何使range参数依赖于我的查找行。我使用类似=TEXTJOIN(CHAR(10), TRUE, INDEX(A2:M2,,(A1:M1="Yes")*COLUMN(A1:M1)))之类的东西来玩INDEX,但没有任何运气。在一天结束时,我希望有类似的东西:

  

阶段1第2阶段第5阶段

请注意,上述数据应全部出现在同一单元格中 - 使用换行符CHAR(10),因为TEXTJOIN函数中的分隔符将使所有相位出现在单个单元格中的新行上。我不想通过多个单元填充公式。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

enter image description here

请看一下图片。我过去遇到了类似的问题(并将其带到StackOverflow,此时我得到了@ScottCraner的帮助,原帖在这里: Doing an array formula lookup

基本上, 1)你设置你正在寻找的阵列 - 在我的情况下,它的$ A $ 2:$ A $ 6,在你的情况下它将是$ B $ 2:$ M $ 2。 2)然后将COUNTIFS函数嵌套在匹配函数中。该功能执行以下操作:   A)当您复制/粘贴时,它检查阶段X的名称是否已在E列中显示   B)如果有,转到下一个   C)如果没有,输出 3)值得注意的是:这是一个数组公式,因此公式本身就是检查每个单元格。所以看一下A2;如果B2中的单元格为“是”,并且“阶段1”不在E列的范围内,则进入阶段1.因为它是,它就在那里。然后它查看单元格A3;如果B3中的单元格为“是”,则第2阶段的单元格相同。然后查看单元格A4;因为B4是“否”,*(B2:B6 =“是”)将引发错误。等等 4)在函数周围放置错误捕获括号。

答案 1 :(得分:0)

一个不太优雅的方法,不需要数组公式就是使用辅助列"是/否"作为一个指标。这假设辅助列中的值是多余的 - 并且重复主列"是"或"否。"

在C1:=CONCATENATE(B1,COUNTIFS($A$1:B1,B1)) - 对E1,G1等重复相对

某处单独(以下公式假设同一工作表的第1行),您可以使用:=IFERROR(INDEX($2:$2,MATCH(CONCATENATE("Yes",ROW()),$1:$1,0)-1),"")

查找" Yes1",返回"阶段1"并自动填充向下。当你用完"是"这里使用IFERROR返回空白结果。