我有一张表需要浏览并返回第一行,第二行中的每个对应值均为“是”
在我的情况下,这意味着:“ TA”和“ RA”
+-----+----+-----+
| TA | SA | RA |
+-----+----+-----+
| Yes | No | Yes |
+-----+----+-----+
是否可以将这些值组合成一个用逗号分隔的Excel单元格?
这样一个单元格将包含“ TA,RA”
我使用的公式是将所有值存储到一个数组中,然后让该数组使用yes将所有值写入相邻的单元格,然后将它们与替代函数组合在一起。
=IFERROR(INDEX($A$1:$C$1,1,IFERROR(SMALL(IF($A1:$A3="Yes",COLUMN($A1:$A3)),ROW(1:1)), "")), "")
=SUBSTITUTE(TRIM(A1&" "&B1&" "&C1&" "&D1&" "&D1)," ",", ")
它将变为:
+----+----+
| TA | RA |
+----+----+
进入:
+--------+
| TA, RA |
+--------+
是否有更快/更干净的方法来构建此函数,以将所有与“是”匹配的值返回到用逗号分隔的单个单元格中?
答案 0 :(得分:2)
如果您拥有Excel 2016+,则可以在数组公式中使用TEXTJOIN
函数。
=TEXTJOIN(",",TRUE,IF(2:2="Yes",$1:$1,""))
要输入/确认数组公式,请在按下 enter 的同时按住 ctrl + shift 。如果正确执行此操作,Excel会在公式栏中显示的公式周围放置括号{...}
。
答案 1 :(得分:1)
您反对自定义功能吗?
Function LISTTHEYESES(valuerange As Range)
Dim cell As Range, resultstring As String
For Each cell In valuerange
If cell.Offset(1, 0).Value = "Yes" Then
If resultstring <> "" Then
resultstring = resultstring & ", " & cell.Value
Else
resultstring = cell.Value
End If
End If
Next cell
LISTTHEYESES = resultstring
End Function