我已将一些日志数据导出到电子表格中。它有 2 列:
Entry 1 | 29/5/2021
Entry 2 | 29/5/2021
Entry 3 | 28/5/2021
Entry 4 | 28/5/2021
Entry 5 | 28/5/2021
即,每个条目占据一个单元格,每个日期有多个条目分布在多行上。
如何将每个日期的所有条目合并到一行上的单个单元格中?
我知道这不是一件容易的事,所以如果能得到帮助我将非常感激。
答案1
如果您有Office 365,则可以使用TEXTJOIN
、UNIQUE
和FILTER
功能。
请注意,我使用了桌子使用公式中的结构化引用,因为这会使引用自动调整。如果愿意,您可以使用常规寻址。
例如:
J2: =UNIQUE(Table6[Column2])
K2: =TEXTJOIN(";",TRUE,FILTER(Table6[Column1],J2=Table6[Column2]))
选择K2
并填写所需内容
编辑:
如果您没有 Office 365,则可以在 Windows Excel 2010+ 中提供的 Power Query 中获取结果
- 在数据表中选择一些单元格
Data => Get&Transform => from Table/Range
- 当 PQ 编辑器打开时:
Home => Advanced Editor
- 记下表格姓名在第 2 行
- 将下面的 M 代码粘贴到您所看到的位置
- 将第 2 行的表名改回最初生成的表名。
- 阅读评论并探索
Applied Steps
以了解算法
M 代码
let
//Read in the data
//change Table Name in next line to reflect actual table name
Source = Excel.CurrentWorkbook(){[Name="Table9"]}[Content],
//set data types
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Entry", type text}, {"Date", type date}}),
//Group by date and concatenate the Entries
#"Grouped Rows" = Table.Group(#"Changed Type", {"Date"}, {
{"Dates", (t)=> List.Accumulate(t[Entry],"",(state, current)=>
if state = "" then current else state & ", " & current), type text}
})
in
#"Grouped Rows"
答案2
将所有条目放入每行一个单元格中,每个日期假设共享表的单元格是
A1:B5
在 C1 中输入:=A1
在 C2 中输入:=IF(B2=B1,C1&"|"&A2,A2)
并向下拖动。
在 D1 中输入:=IF(B1=B2,"",B1)
并向下拖动。
在 E1 中输入:=IF(B1=B2,"",C1)
并向下拖动。
在 F1 中输入:=ROW()-COUNTBLANK($E$1:E1)
并向下拖动。
在 G1 中输入 :=IFERROR(INDEX(D:D,MATCH(ROW(),F:F,0)),"")
并向下拖动。
在 H1 中输入 :=IFERROR(INDEX(E:E,MATCH(ROW(),F:F,0)),"")
并向下拖动。
这将为您提供不同日期的组合单元格。
如果有效/无效,请分享。(: