我有一个看起来像这样的电子表格:
A B C D
FirstName SurnameName Address UniqueFamilyId
---------------------------------------------------------
Abe Black 1 Elm Ave :Black:1 Elm Ave:
Joe Doe 7 Park Ln :Doe:7 Park Lane:
Jack Black 1 Elm Ave :Black:1 Elm Ave:
Bill Doe 2 5th Ave :Doe:2 5th Ave:
Harry Doe 7 Park Ln :Doe:7 Park Lane:
Sam Doe 7 Park Ln :Doe:7 Park Lane:
我创建了UniqueFamilyId列,以本质上唯一地标识每个家族。
[我正在尝试制定一个公式,以将居住在同一地址的所有人员的名字收集到一个单元格中-即,将填写E列(AllFirstNames)的一个单元格。
A B C D E
FirstName SurnameName Address UniqueFamilyId AllFirstNames
-------------------------------------------------------------------------------
Abe Black 1 Elm Ave :Black:1 Elm Ave: Abe Jack
Joe Doe 7 Park Ln :Doe:7 Park Lane: Joe Harry Sam
Jack Black 1 Elm Ave :Black:1 Elm Ave: Abe Jack
Bill Doe 2 5th Ave :Doe:2 5th Ave: Bill
Harry Doe 7 Park Ln :Doe:7 Park Lane: Joe Harry Sam
Sam Doe 7 Park Ln :Doe:7 Park Lane: Joe Harry Sam
我怀疑将vlookup和数组公式混合使用会达到目的,但是,如果我必须使用Excel VBA或Google Apps脚本,那么我不在乎。请您能帮助我实现这一目标。
我猜这是在D列(UniqueFamilyId)中查找所有值的某种形式相同,然后使用vlookup获得名字,所有名字都在数组公式中以将它们全部收集起来。
P.S。我已经解决了如何计算每个地址有多少人-公式很简单
=COUNTIF(D$1:D$65536,D1)
但是我希望收集所有这些名称,而不仅仅是一个数字。
在Google电子表格上,您可以像这样使用ArrayFormula:
=ArrayFormula(concatenate(rept(A:A&" ";D:D=D2)))
只需将其粘贴到单元格E2
上,然后复制下来。
[编辑]
[多玩一点,我知道可以在单个单元(E2)上完成所有操作。即无需抄袭。自然地,它的方式更复杂:)但是,您去了:
=ArrayFormula(transpose(split(concatenate(transpose(if(D2:D=transpose(D2:D);A2:A&" ";"")&if(row(D2:D)=rows(D2:D)+1;char(9);"")));char(9))))
使用VBA功能可让您在一个单元格中总结比赛。我已经多次使用下面的函数来连接值数组-内置函数CONCATENATE()
无法执行此操作。
步骤1:按Alt + F11在Excel中打开VBA编辑器窗格。插入一个新模块,并在此代码中粘贴自定义功能。
Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate. sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer
On Error GoTo EH
rra = rr
out = ""
i = 1
Do While i <= UBound(rra, 1)
If rra(i, 1) <> False Then
out = out & rra(i, 1) & sep
End If
i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function
EH:
rra = rr.Value
Resume Next
End Function
此功能将允许您创建用逗号分隔的列表以汇总您拥有的标签数据。
STEP 2:在表格的E2
中,粘贴以下公式,然后按Ctrl + Shift + Enter。这将作为数组公式输入。
=CCARRAY(IF(D2=$D$2:$D$7,$A$2:$A$7)," ")
只需填写该列,就应该这样做。