Excel 如果不是空列表,则用逗号连接

Excel 如果不是空列表,则用逗号连接,excel,excel-formula,excel-2013,Excel,Excel Formula,Excel 2013,在Excel中,我需要将每个其他单元格连接到一个主单元格中。我用这个公式来征服before=SUBSTITUTETRIMG2&&BC2&&BE2&&BG2,但是当我连接的数据中有逗号时,这会改变数据 我需要连接的单元范围是从G2到BG2的每一个单元。处理涉及逗号列表的连接时,最好的做法是什么 编辑 我对alters数据的意思是 S223 - Pills, S2323 - Patterns - Backstock, 1/Var 用上面的公式变成这个 S223, -, Pills,, S2323,

在Excel中,我需要将每个其他单元格连接到一个主单元格中。我用这个公式来征服before=SUBSTITUTETRIMG2&&BC2&&BE2&&BG2,但是当我连接的数据中有逗号时,这会改变数据

我需要连接的单元范围是从G2到BG2的每一个单元。处理涉及逗号列表的连接时,最好的做法是什么

编辑 我对alters数据的意思是

S223 - Pills, S2323 - Patterns - Backstock, 1/Var
用上面的公式变成这个

S223, -, Pills,, S2323, -, Patterns, -, Backstock,, 1/Var

不久前,我在网上找到了这段代码,因为我的一个个人项目需要它。这样做的目的是获取一个字符串,并用指定的字符替换每个不允许的值。在你的情况下,我会想象你允许每个字符,除了,并取代它的或。这样,A,-,B,-,C就变成了A-B-C

Function cleanString(text As String) As String

    Dim output As String
    Dim c
    For i = 1 To Len(text)
        c = Mid(text, i, 1)
        If (c >= "a" And c <= "z") Or (c >= "0" And c <= "9") Or (c >= "A" And c <= "Z" Or c = " " Or c = "-" Or c = "é" Or c = "É" Or c = "_") Then ' <=list of allowed values in a string
            output = output & c
        Else
            output = output & " " '<= what unallowed values gets replaced by
        End If
    Next
    cleanString = output
End Function
希望这能有所帮助,当您在问题中添加标签时,我考虑了VBA。

以下UDF应该是您想要的

Function TEXTJOIN(delimiter As String, ignore_empty As String, ParamArray textn() As Variant) As String
    Dim i As Long
    For i = LBound(textn) To UBound(textn) - 1
        If Len(textn(i)) = 0 Then
            If Not ignore_empty = True Then
                TEXTJOIN = TEXTJOIN & textn(i) & delimiter
            End If
        Else
            TEXTJOIN = TEXTJOIN & textn(i) & delimiter
        End If
    Next
    TEXTJOIN = TEXTJOIN & textn(UBound(textn))
End Function
在以下情况下使用UDF:

公式如下:

 =TEXTJOIN(", ",TRUE,IF(MOD(COLUMN(G2:BG2),2)=1,G2:BG2,""))

作为一个数组公式,需要使用Ctrl-Shift-Enter确认。

TEXTJOIN,它可在office 365 excel上获得。它有能力忽略空白单元格。当我在其中有一个逗号时,什么意思会改变数据。这个公式连接所有值,修剪开头和结尾的空格,然后用逗号和空格替换掉任何空格。它不会改变数据中的现有空间。我想你可能想要一个替代品;在现有的替换函数中,用分号或其他什么来交换数据中的逗号…?@jnevil-请参阅我的edit@ScottCraner-看起来Textjoin函数可以工作,但在Excel 2013中是否可用?我无法在函数中找到它,当我开始键入=TEXTJONo时,没有弹出任何内容,但是你可以使用我在这里制作的自定义项:它模仿TEXTJOIN。我的解决方案是在使用你的公式后清理字符串,而不是通过查看所有注释来找到一个更好的公式。我将如何利用这个函数?我知道如何放置在模块中,但在这样之后?基本上,我想象你会在工作簿中设计某种onChangeEvent,调用这个sub,其中输入字符串是你的单元格的值,它完美地得到了它!非常感谢。Excel实际上把它作为一个数组公式,所以我不必使用Ctrl+Shift+Enter