【问题标题】:How can i concatenate row text with comma in excel?如何在excel中用逗号连接行文本?
【发布时间】:2014-02-10 15:32:07
【问题描述】:

我有一个如下的excel数据,我想按照这样的人名连接用逗号分隔的技能;

Irakli Beridze     |  C#, Python, Java
Parpali Zurashvili |  C++, C

我可以按照后面的场景来实现,但是我有n条数据行。

【问题讨论】:

  • 同一个人的重复技能会成为问题吗?

标签: excel excel-formula concatenation


【解决方案1】:

您可以使用这样的辅助列来做到这一点:

  1. 插入过滤器并按名称排序:

  2. 在单元格C2中,输入公式:

    =IF(A2=A3,0,1)
    

    0 将是“副本”所在的位置,1 将是要保留的最后一行的位置。

  3. 在 D2 单元格中,输入 B2 的值,在 D3 中,输入以下公式:

    =IF(A3=A2,D2&", "&B3,B3)
    

  4. 现在已经完成,复制并粘贴 D 列中的值(复制整个列,使用特殊粘贴并选择“值”)。删除过滤器,重新添加过滤器,但这次是在所有 4 列上并在 C 列中过滤 0

  5. 删除这些行并清除过滤器。最后,对 A 列进行排序:

您现在可以删除列 B 和 C。

【讨论】:

    【解决方案2】:

    如果您不介意 VBA,可以使用以下内容:

    Sub ConcatRows()
    Dim arr As Variant
    Dim i As Long
    Dim d As Dictionary
    
    'Create a dictionary to hold all Name and Skill Values
    Set d = CreateObject("Scripting.Dictionary")
    
    'Fill an array with all Values
    arr = Range("A2", Cells(Rows.Count, 2).End(xlUp))
    
    'Loop the Values and and them into a dictionary
    For i = LBound(arr) To UBound(arr)
    
        'If Name already in list then Add Skill to Item value of Name Key
        If d.Exists(arr(i, 1)) Then
            d(arr(i, 1)) = d(arr(i, 1)) & ", " & arr(i, 2)
        'If Name isn't already in list then add name with its first Skill
        Else
            d.Add arr(i, 1), arr(i, 2)
        End If
    
    Next i
    
    'Write all Name back to Worksheet
    Range("A2").Resize(d.Count) = Application.Transpose(d.Keys)
    'Write all Skills Back to worksheet
    Range("B2").Resize(d.Count) = Application.Transpose(d.Items)
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 2015-11-04
      • 2016-11-29
      • 1970-01-01
      • 2014-01-04
      • 2011-01-01
      • 1970-01-01
      相关资源
      最近更新 更多