我有多行购买详情。每次购买都有一个客户ID。出于演示目的,我需要将具有类似客户端ID的购买合并到一个单元格中,这样我就可以使用VLOOKUP在另一个具有客户端信息的表中显示它。有什么想法吗?
在下面的例子中,我希望单元格C2包含“1,2”,单元格C3包含“3”,单元格C4为空(单元格没有购买)。
A B C
1 client_id name purchase_ids
2 1 jim
3 2 bob
4 3 bill
purchase_id purchase_client_id amount
1 1 100
2 1 500
3 2 50
答案 0 :(得分:2)
您可以在新工作表中创建动态数据透视表,按ClientID汇总销售,然后将该表与VLOOKUP(http://www.tips-for-excel.com/2011/06/how-to-make-a-pivot-table/)一起使用。
示例数据表
ClientID汇总的数据透视表
答案 1 :(得分:2)
这里有另一个建议,做一个用VBA收集一个单元格中的数据的函数。在前一段时间完成,但你可以使用&根据自己的目的编辑它 -
Option Explicit
Public Function STRINGCONCATENATEVLOOKUP(ByVal r As Range, ByVal criteria As Variant, Optional ByVal colnum As Long, Optional ByVal separator As String) As String
On Error GoTo err_hand
Dim n As Long
Dim result As String
If colnum = Empty Then colnum = r.Columns.Count
If colnum > r.Columns.Count Or colnum < 1 Then
STRINGCONCATENATEVLOOKUP = "#COLVALUE!"
Exit Function
End If
If separator = "" Then separator = ";"
For n = 1 To r.Rows.Count Step 1
If r.Cells(n, 1).Value = criteria Then result = result & r.Cells(n, colnum).Value & separator
Next
result = Left(result, Len(result) - Len(separator))
STRINGCONCATENATEVLOOKUP = result
Exit Function
err_hand:
STRINGCONCATENATEVLOOKUP = CVErr(xlErrValue)
End Function
函数的工作方式与VLOOKUP类似,但区别在于它汇总所有数据并返回以“;”分隔的字符串或者你定义的内容。
答案 2 :(得分:1)
我担心你不得不用VBA(宏编程)来做你想做的事情。
没有Excel功能可以创建一个连心列表。 Excel函数CONCATENATE
无法满足您的需求:
=CONCATENATE(A1, "-", B1) # returns "foo-bar" if A1 has 'foo' and B1 has 'bar'
答案 3 :(得分:0)
我的回答需要MOREFUNC addon *
这里我假设购买“表”中的数据在A9:C11中。相应调整。
C2的公式:
{=MCONCAT(IF($B$9:$B$11=A2,$A$9:$A$11,""),",")}
注意花括号。这是一个数组公式,您必须使用Ctrl+Shift+Enter
确认,而不仅仅是Enter
然后将公式复制到C3和C4
MOREFUNC ADDON