根据下一列中的日期将 Excel 单元格合并为 1 个单元格

根据下一列中的日期将 Excel 单元格合并为 1 个单元格

我已将一些日志数据导出到电子表格中。它有 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,则可以使用TEXTJOINUNIQUEFILTER功能。

请注意,我使用了桌子使用公式中的结构化引用,因为这会使引用自动调整。如果愿意,您可以使用常规寻址。

例如:

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)),"")并向下拖动。

这将为您提供不同日期的组合单元格。

如果有效/无效,请分享。(:

答案3

将 B 列复制到新列并转到数据-删除重复项在此处输入图片描述

然后运行这个数组公式以结束Ctrl+Shift+Enter

=TEXTJOIN(",",1,IF(B1:B5=E1,A1:A5,""))

在此处输入图片描述

相关内容