gpt4 book ai didi

excel - 如果范围中的单元格包含特定文本/字符,如何连接列标题

转载 作者:行者123 更新时间:2023-12-03 02:08:23 27 4
gpt4 key购买 nike

我正在尝试根据特定条件创建列名称列表(如果单元格包含“*”)。

基本上,我试图让 Excel 自动创建第四列:

(1) A       B       C           List
(2) Bob* Mike John* A; C
(3) Jane Lisa* Brenda* B; C

*请注意,我有超过 100 列

我对 VBA 和 Concatenate 函数有点熟悉,但我不是专家。

感谢您花时间阅读这篇文章!

艾琳

最佳答案

确实有多种选择:

选项 1:Excel TEXTJOIN

如果您有支持 TEXTJOIN() 的 Excel 许可证,您可以使用:

=TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH("~*",A2:C2)),A2:C2,""))

对于返回值或:

=TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH("~*",A2:C2)),$A$1:$C$1,""))

用于返回列标题。通过 CtrlShiftEnter 输入两个公式并向下拖动。

选项 2:Google Spreadsheet TEXTJOIN

如果您可以使用 Google 电子表格(免费使用,并且如果您只需要在可能值得传输数据时执行此操作),则可以使用相同的功能。它看起来像:

=ARRAYFORMULA(TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH("~*",A2:C2)),A2:C2,"")))

对于返回值或:

=ARRAYFORMULA(TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH("~*",A2:C2)),$A$1:$C$1,"")))

用于再次返回列标题。

<小时/>

请注意,在选项 1 和选项 2 中,我都使用了波形符 ~ 作为转义字符,告诉 excel 我们实际上是在寻找星号。

<小时/>

选项 3:Visual Basic

如果您没有支持 TEXTJOIN() 的 Excel 许可证,并且也无法使用 Google 电子表格,则最好的选择是 UDF(用户定义函数),例如:

Function CONCATENATEIF(RNG As Range, CON As String) As String

For Each CL In RNG
If InStr(1, CL.Value, CON) > 0 Then CONCATENATEIF = CONCATENATEIF & CL.Value & ", "
Next CL
If CONCATENATEIF <> "" Then
CONCATENATEIF = Left(CONCATENATEIF, Len(CONCATENATEIF) - 2)
End If

End Function

在工作表中调用它,如下所示:

=CONCATENATEIF(A2:C2,"*")

然后向下拖动...(请注意,这次我们不需要波浪号)。同样,如果您想返回 header ,只需将 CONCATENATEIF = CONCATENATEIF & CL.Value & ", " 更改为 CONCATENATEIF = CONCATENATEIF & Cells(1, CL.Column).Value & ", "

<小时/>

所有选项的输出:

enter image description here

或者:

enter image description here

关于excel - 如果范围中的单元格包含特定文本/字符,如何连接列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com