需要在excel中合并3列

需要在excel中合并3列,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有3列A、B、C,我需要合并这3列,我已经应用了forumala=A1&“,”&B1&“,“&C1输出为E列,我需要输出为D列 以下公式将达到您想要的结果: =TEXTJOIN(",",TRUE,A1:C1) Textjoin的工作原理与concatenate类似,但可以使用分隔符作为参数,还可以忽略空白单元格,第一个参数是分隔符,第二个参数是忽略空白的标志,第三个参数是范围 由于评论确实提到TEXTJOIN仅适用于Office 365订阅服务器,一种可能的替代方法是按以下方式构建您的UDF

我有3列A、B、C,我需要合并这3列,我已经应用了forumala
=A1&“,”&B1&“,“&C1
输出为E列,我需要输出为D列


以下公式将达到您想要的结果:

=TEXTJOIN(",",TRUE,A1:C1)
Textjoin的工作原理与concatenate类似,但可以使用分隔符作为参数,还可以忽略空白单元格,第一个参数是分隔符,第二个参数是忽略空白的标志,第三个参数是范围

由于评论确实提到TEXTJOIN仅适用于Office 365订阅服务器,一种可能的替代方法是按以下方式构建您的UDF,这将允许您在不使用Office 365订阅的情况下使用上述公式:

Function TEXTJOIN(delimiter As String, ignore_empty As Boolean, rng As Range) As String
Dim compiled As String
For Each cell In rng
    If ignore_empty And IsEmpty(cell.Value) Then
        'nothing
    Else
        compiled = compiled + IIf(compiled = "", "", delimiter) + CStr(cell.Value)
    End If
Next
TEXTJOIN = compiled
End Function

将此公式输入到
E1

=CONCATENATE(A1, IF(AND(B1<>"", A1<>""), ",", ""), B1,
    IF(AND(OR(A1<>"", B1<>""), C1<>""), ",", ""), C1)
=串联(A1,IF(AND(B1)”,A1“,”,”,B1,
如果(和(或(A1“”、B1“”、C1“”)、“、”、C1)

使用可能是一个更干净的选项,但仅在较新版本的Excel上可用。

如果单元格中没有空格,则在D1中输入:

=SUBSTITUTE(TRIM(A1 & " " & B1 & " " & C1)," ",",")
并向下复制:


try=CONCATENATE(D1,“,”,E1)etcNote已弃用,此处仅用于兼容性,CONCAT是替代品。值得一提的是,“除非您拥有Office 365订阅,否则Excel 2016中不可用。如果您是Office 365订阅方,请确保您拥有最新版本的Office。”
'Put this code in module and use formula concmulti and select the range 
Function concmulti(slt As Range) As String
Dim str As String
Dim cell As Range
For Each cell In slt
str = str & cell.Value & ", "
Next cell
concmulti = str
End Function