Excel 使用分隔符合并列'';唐';如果不存在值,则不显示分隔符

Excel 使用分隔符合并列'';唐';如果不存在值,则不显示分隔符,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,我将数据合并到列A中,如下所示: =B2&“,”与C2&“,”与D2 但是,如果列中没有值,它会附加我不想要的内容,例如extra、。所以结果应该是这样的 A | B | C | D ES ES DE,NL,IT DE NL IT CH CH CH CH DE,BE,AT DE BE AT FR,BE FR BE CH,SG CH SG

我将数据合并到列A中,如下所示:

=B2&“,”与C2&“,”与D2

但是,如果列中没有值,它会附加我不想要的内容,例如extra、。所以结果应该是这样的

A        |  B | C  | D 
ES          ES      
DE,NL,IT    DE  NL  IT
CH          CH      
CH          CH      
DE,BE,AT    DE  BE  AT
FR,BE       FR  BE  
CH,SG       CH  SG  
AT,CH,ES    AT  CH  ES

如何做到这一点

使用此公式
=B2&IF(C2“,”和C2“,”和IF(D2“,”和D2“)…

使用用户定义的函数连接单元格忽略或跳过空格

如果需要组合多个单元格,则上述公式将过于复杂,无法执行,因此,您可以使用以下自定义函数进行求解

  • 在Excel中按住Alt+F11键,将打开Microsoft Visual Basic for Applications窗口

  • 单击“插入”>“模块”,然后在“模块”窗口中粘贴以下宏

  • VBA代码:连接单元格忽略空格:

    Function Concatenatecells(ByVal ConcatArea As Range, Optional ByVal Separator As String = "/") As String
    'updateby Extendoffice 20151103
      For Each n In ConcatArea: nn = IIf(n = "", nn & "", nn & n & Separator): Next
      Concatenatecells = Left(nn, Len(nn) - Len(Separator))
    End Function
    
  • 保存并关闭此代码窗口,返回工作表,然后输入以下公式:=Concatenatecells(范围,[分隔符]) ex:=串联单元(A1:A5,“,”) ex:=串联单元(D11:d52)

  • 如果您使用的是Excel 2016,则可以使用该函数连接分隔符,该分隔符还允许您跳过空白单元格

    例如:

    =TEXTJOIN(",",TRUE,B2:D2)
    
    将返回:

    A        |  B  |  C  |  D 
    ES          ES      
    DE,NL,IT    DE    NL    IT
    

    安德烈亚斯是对的。。。应为=B2&IF(C2“,”和C2“,”和IF(D2“,”和D2“)。。。。否则,第一个值会出现两次。但它是有效的。。。谢谢(虽然我有20列,公式很大:-)
    A        |  B  |  C  |  D 
    ES          ES      
    DE,NL,IT    DE    NL    IT
    
    =IF(COUNTA(B2:D2)=1,B2,IF(COUNTA(B2:D2)=2,B2&","&C2,B2&","&C2&","&D2))