根据行和列的交集的值返回值

我想返回一个基于行和列的交集等于“是”的标签。

| Location | ID | Tool | Wall | Bin | Toolbox | Count ---+--------+------+-----+---------+------- 1. | Axe | YES | | | 1 2. | Hammer | | | YES | 5 3. | Pliers | | | YES | 2 4. | Nails | | YES | | 500 5. | Hoe | YES | | | 2 6. | Screws | | YES | | 200 7. | Saw | YES | | | 3 

什么在工具箱? (结果通缉)

 Axe,Wall, 1 Hammer, Toolbox, 5 Pliers,Toolbox, 2 Nails,Bin, 500 Hoe, Wall, 2 Screws, Bin, 200 Saw, Wall, 3 

我也想要添加工具和位置?

没有使用VBA,这将是一个痛苦,但可行,如果你不介意帮手列。 我不build议尝试在单个数组公式中执行此操作,因为文本string很难在数组公式中使用。 那就是 – 如果你有一个数组数组,你可以用很多方法把它变成一个单一的结果(MIN,MAX,AVERAGE,SUM等等)。 但是,对于string数组来说,使用起来更加困难。 特别是,没有简单的方法来连接一个string数组。

所以相反,使用帮手列。 假定列A =工具名,列B =检查在墙上,列C =检查是否在箱中,列D是否在工具箱中,列E是可用的号码。

格式化边注

首先,我会说我build议你使用TRUE / FALSE而不是“yes”/“no”。 这是因为在Excel公式中使用TRUE / FALSE更容易。 例如,如果要在A3 =“是”时添加A1 + A2,则可以这样做:

 =IF(A3="yes",A1+A2) 

但是如果你想检查A3 = TRUE,这是简化的:

 =IF(A3,A1+A2) 

在这里,我们不需要硬编码“是”,因为A3本身将是TRUE或FALSE。 另外考虑如果你想要一个单元格“是”如果A3> 5,否则是“否”。 你可以这样做:

 =IF(A3>5,"yes","no) 

或者,如果您使用TRUE / FALSE,则可以简单地使用:

 =A3>5 

然而,我假设你保持格式你现在有(我也build议你只有一个单元格,说“工具箱”/“斌”等,而不是4列,其中1表示“是”,但我们也会假设这需要这样)。

回到你的问题

把它放在F列,在第一个单元格的F2:

 =Concatenate(A2," ",INDEX($B$1:$D$1,MATCH("yes",B2:D2,0))," ",E2) 

连接将文本string组合成新的单个文本string。 你也可以使用&; 如:A2&“”等,但是有了这么多的条款,这可能更容易阅读。 索引查看您的标题行1,并返回当前行中匹配“是”的第一列的项目。

然后在F3中放入以下内容并向下拖动:

 =Concatenate(F2," ", A2," ",INDEX($B$1:$D$1,MATCH("yes",B2:D2,0))," ",E2) 

这在上面和当前行之间放置一个空间。 如果你想让每一行出现在换行符之后,使用这个:

 =Concatenate(F2,CHAR(10), A2," ",INDEX($B$1:$D$1,MATCH("yes",B2:D2,0))," ",E2)