Ash*_*Ash 5 google-sheets array-formulas google-sheets-formula
我有一个看起来像这样的电子表格:
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:
Run Code Online (Sandbox Code Playgroud)
我创建了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
Run Code Online (Sandbox Code Playgroud)
我怀疑vlookup和数组公式的混合可以解决问题,但如果我必须使用Excel VBA或Google Apps脚本,我不介意.请帮我解决这个问题.
我猜这是找到D列(UniqueFamilyId)中相同的所有值的某种形式,然后使用vlookup获取名字,所有这些都在数组公式中将它们全部收集起来.
PS我已经弄清楚如何计算每个地址的生活数量 - 公式很简单
=COUNTIF(D$1:D$65536,D1)
Run Code Online (Sandbox Code Playgroud)
但我希望收集所有这些名字,而不仅仅是一个计数.
在Google Spreadsheet上,您可以像这样使用ArrayFormula:
=ArrayFormula(concatenate(rept(A:A&" ";D:D=D2)))
Run Code Online (Sandbox Code Playgroud)
只需将其粘贴在单元格上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))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10326 次 |
| 最近记录: |