我在Excel中有以下格式的数据
Employee Company
John A
George A
Bob A
Peter B
Luke B
我需要:
Company Employees
A John,George,Bob
B Peter,Luke
在Excel中有一种简单的方法吗?
答案 0 :(得分:4)
我刚才发布了something similar的答案。同样的原则可以在这里适用,但在你的情况下更容易。
首先,确保列表按B列排序。
在单元格C2中,您可以输入:
=IF(B2=B3,0,1)
我们稍后会使用它。在单元格D2中,输入:
=IF(B1=B2,CONCATENATE(D1,", ",A2),A2)
向下拖动/填充两个公式,您应该在C列中有1
的每个单元格上获得完整列表。在公式上复制/粘贴值,然后应用过滤器。选择C列中的所有0
并删除所有记录(在A到D列中)。之后,删除过滤器并按任何列排序。
答案 1 :(得分:0)
答案 2 :(得分:0)
原来如此!如果匹配样式比较/查找,您想要进行连接。不幸的是,Excel中没有任何开箱即用的功能,但这个稍微复杂的Q& A线程概述了两种可能的方法:
这两种方法都需要一些Excel的高级知识(VLOOKUP,复合函数等)。如果你不熟悉这些东西,那么VLOOKUP是一个很好的起点!
答案 3 :(得分:0)
多个单元格上的字符串连接最好留给VBA 用户定义函数(又名 UDF ),即使没有设置标准。您对未知数量的字符串和应用循环标准的情况肯定适合此类别。
点击 Alt + F11 ,当VBE打开时,立即使用下拉菜单插入►模块( Alt + 我,中号)。将以下内容粘贴到标题为 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, "; ")