繁体   English   中英

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

[英]Return values, based on value of an intersection of a row and column

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

            |       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,这会有些麻烦,但是如果您不介意helper列,则可以使用。 我不建议尝试在单个数组公式中执行此操作,因为文本字符串很难在数组公式中使用。 也就是说-如果您有一组数字,则可以通过多种方式(最小,最大,平均,总和等)将其转换为单个结果。 但是,如果使用字符串数组,则很难使用。 特别是,没有简单的方法来连接字符串数组。

因此,请使用帮助程序列。 假设A列=工具名称,B列=检查在墙上,C列=检查在箱中,D列显示在工具箱中,E列显示可用编号。

格式说明

首先,我会建议您使用TRUE / FALSE,而不是“ yes” /“ no”。 这是因为在Excel公式中更容易使用TRUE / FALSE。 例如,如果要在A3 =“ yes”时添加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

但是,我假设您保持当前的格式(我也建议您仅使用一个单元格,其中显示“ toolbox” /“ bin”等,而不是4列,其中1表示“ yes”,但是我们还假定这需要采用这种方式。

返回您的问题

将其放在第一个单元格的F列中的F2中:

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

串联将文本字符串组合成新的单个文本字符串。 您也可以使用&; 例如: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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM