如何根据范围中的条件将逗号分隔值列表返回到单个Excel单元格

时间:2018-11-26 22:26:13

标签: excel excel-formula

我有一张表需要浏览并返回第一行,第二行中的每个对应值均为“是”

在我的情况下,这意味着:“ 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 |
+--------+

是否有更快/更干净的方法来构建此函数,以将所有与“是”匹配的值返回到用逗号分隔的单个单元格中?

2 个答案:

答案 0 :(得分:2)

如果您拥有Excel 2016+,则可以在数组公式中使用TEXTJOIN函数。

=TEXTJOIN(",",TRUE,IF(2:2="Yes",$1:$1,""))

要输入/确认数组公式,请在按下 enter 的同时按住 ctrl + shift 。如果正确执行此操作,Excel会在公式栏中显示的公式周围放置括号{...}

enter image description here

答案 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

img1