Return 个值,基于行和列的交集值
Return values, based on value of an intersection of a row and column
我想 return 基于等于 "Yes" 的行和列的交集的标签。
| 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,这会有点麻烦,但如果您不介意辅助列,这是可行的。我不建议尝试在单个数组公式中执行此操作,因为文本字符串很难在数组公式中使用。也就是说 - 如果您有一个数字数组,您可以通过多种方式(MIN、MAX、AVERAGE、SUM 等)将其转换为单个结果。然而,对于字符串数组,它更难处理。特别是,没有简单的方法来连接字符串数组。
因此,改用辅助列。假设 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)
在这里,我们不需要硬编码 "yes",因为 A3 本身要么为 TRUE,要么为 FALSE。还要考虑如果 A3 > 5 是否要制作单元格 "yes",否则为 "no"。你可以这样做:
=IF(A3>5,"yes","no)
或者,如果您使用了 TRUE/FALSE,您可以简单地使用:
=A3>5
但是,我会假设您保留当前的格式(我还建议您只使用一个单元格来表示 "toolbox"/"bin" 等,而不是 4 1 表示 "yes" 的列,但我们也假设这需要这样)。
回到你的问题
将其放在 F 列中,第一个单元格的 F2 中:
=Concatenate(A2," ",INDEX($B:$D,MATCH("yes",B2:D2,0))," ",E2)
连接将文本字符串组合成一个新的单个文本字符串。你也可以使用 &;像:A2 & " " 等,但有这么多术语,这可能更容易阅读。索引查看您的 header 第 1 行,以及 returns 第一列中与当前行中的 "yes" 匹配的项目。
然后将下面的内容放入F3并向下拖动:
=Concatenate(F2," ", A2," ",INDEX($B:$D,MATCH("yes",B2:D2,0))," ",E2)
这会在上一行和当前行之间放置一个 space。相反,如果您想让每一行都出现在 line-break 之后,请使用:
=Concatenate(F2,CHAR(10), A2," ",INDEX($B:$D,MATCH("yes",B2:D2,0))," ",E2)
我想 return 基于等于 "Yes" 的行和列的交集的标签。
| 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,这会有点麻烦,但如果您不介意辅助列,这是可行的。我不建议尝试在单个数组公式中执行此操作,因为文本字符串很难在数组公式中使用。也就是说 - 如果您有一个数字数组,您可以通过多种方式(MIN、MAX、AVERAGE、SUM 等)将其转换为单个结果。然而,对于字符串数组,它更难处理。特别是,没有简单的方法来连接字符串数组。
因此,改用辅助列。假设 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)
在这里,我们不需要硬编码 "yes",因为 A3 本身要么为 TRUE,要么为 FALSE。还要考虑如果 A3 > 5 是否要制作单元格 "yes",否则为 "no"。你可以这样做:
=IF(A3>5,"yes","no)
或者,如果您使用了 TRUE/FALSE,您可以简单地使用:
=A3>5
但是,我会假设您保留当前的格式(我还建议您只使用一个单元格来表示 "toolbox"/"bin" 等,而不是 4 1 表示 "yes" 的列,但我们也假设这需要这样)。
回到你的问题
将其放在 F 列中,第一个单元格的 F2 中:
=Concatenate(A2," ",INDEX($B:$D,MATCH("yes",B2:D2,0))," ",E2)
连接将文本字符串组合成一个新的单个文本字符串。你也可以使用 &;像:A2 & " " 等,但有这么多术语,这可能更容易阅读。索引查看您的 header 第 1 行,以及 returns 第一列中与当前行中的 "yes" 匹配的项目。
然后将下面的内容放入F3并向下拖动:
=Concatenate(F2," ", A2," ",INDEX($B:$D,MATCH("yes",B2:D2,0))," ",E2)
这会在上一行和当前行之间放置一个 space。相反,如果您想让每一行都出现在 line-break 之后,请使用:
=Concatenate(F2,CHAR(10), A2," ",INDEX($B:$D,MATCH("yes",B2:D2,0))," ",E2)