2

我在 Excel 中有以下格式的数据

Employee  Company
John      A
George    A
Bob       A
Peter     B
Luke      B

我需要:

Company Employees
A       John,George,Bob
B       Peter,Luke

有没有一种简单的方法可以在 Excel 中做到这一点?

4

4 回答 4

4

我不久前发布了类似问题的答案。同样的原则也适用于此,尽管在您的情况下更容易。

  1. 首先,确保列表按 B 列排序。

  2. 在单元格 C2 中,您可以输入:

    =IF(B2=B3,0,1)

  3. 稍后我们将使用它。在单元格 D2 中,输入:

    =IF(B1=B2,CONCATENATE(D1,", ",A2),A2)

  4. 向下拖动/填充两个公式,您应该1在 C 列中的每个单元格上获得一个完整列表。在公式上复制/粘贴值,然后应用过滤器。选择0C ​​列中的所有内容并删除所有记录(A 到 D 列中)。之后删除过滤器并按任何列排序。

于 2013-05-23T13:05:25.027 回答
0

即使没有设置标准,最好将多个单元格上的字符串连接留给 VBA用户定义函数(又名UDF )。您的字符串数量未知并应用循环标准的情况肯定适合此类别。

点击Alt+ F11,当 VBE 打开时,立即使用下拉菜单插入 ► 模块 ( Alt+ I, M)。将以下内容粘贴到标题为Book1 - Module1 (Code)之类的新窗格中。

Public Function conditional_concat(rSTRs As Range, rCRITs As Range, rCRIT As Range, Optional sDELIM As String = ", ")
    Dim c As Long, sTMP As String
    For c = 1 To Application.Min(rSTRs.Cells.Count, rCRITs.Cells.Count)
        If rCRITs(c).Value2 = rCRIT.Value2 Then _
            sTMP = sTMP & rSTRs(c).Value & sDELIM
    Next c
    conditional_concat = Left(sTMP, Application.Max(Len(sTMP) - Len(sDELIM), 0))
End Function

点击Alt+Q返回您的工作表。像使用任何本机 Excel 工作表函数一样使用此 UDF。语法是,

conditional_concat(<range of strings>, <range of conditions>, <cell with condition>, [optional] <delimiter as string>)

      条件字符串连接

E2中的公式是,

=conditional_concat(A$2:A$99, B$2:B$99, D2)

根据需要填写。我使用可选的sDELIM参数在 E3 中提供分号分隔,

=conditional_concat(A$2:A$99, B$2:B$99, D3, "; ")
于 2015-02-25T04:27:31.510 回答
0

我认为您想要连接功能:

http://office.microsoft.com/en-ca/excel-help/concatenate-HP005209020.aspx

于 2013-05-23T12:51:55.367 回答
0

所以!如果匹配样式比较/查找,您想进行连接。不幸的是,Excel 中没有任何开箱即用的功能,但是这个稍微复杂的问答线程概述了两种可能的方法:

  1. 使用 Excel 的 MoreFunctions 加载项
  2. 使用自定义“MultiLookup”VBA 函数

http://answers.microsoft.com/en-us/office/forum/office_2003-excel/if-vlookup-is-match-then-concatenate/26f6794d-8663-4e59-9a1b-a598c78f3bed

这两种方法都需要一点 Excel 的高级知识(VLOOKUP、复合函数等)。如果您不熟悉这些东西,那么 VLOOKUP 是一个不错的起点!

于 2013-05-23T13:00:23.503 回答