Excel - 合并数据行

Excel - 合并数据行

我需要帮助合并 Excel 中的多行,我需要将相同名称和日期的行合并为一行,将完成的任务合并到一行(日期)。

目前我正在手动合并大约 1000 行数据。

请参见下面的示例。

我需要它看起来像什么

答案1

尝试使用 Power Query:

选择范围 - 转到Data- Get & Transform Data- From Sheet- 打开Power Query Editor- 选择Columns Task 1- Task 6- 转到Transform- 选择Unpivot Columns- 选择Attribute列 - 在选项卡下Transform选择Pivot Column-Value Column选择Value-Advanced option选择Sum- 更改日期格式和close and load to...

在此处输入代码

答案2

您可以使用 sumifs 来实现这一点。本质上,对于每个任务,对名称和日期与摘要行相匹配的每个数据单元求和。

首先,清除范围 C16:H20 但保留范围 A16:B20 中的名称和日期。

然后,在单元格 C16 中输入以下公式:

=SUMIFS(C$2:C$12,$A$2:$A$12,$A16,$B$2:$B$12,$B16)

向下填充至 C20,选择范围 C16:C20 并向右拖动以填充至 H16:H20。“$”不应更改。

答案3

如果使用 Excel 365,您可以执行以下操作:

  • 删除A16至B20的内容,然后在A16输入以下公式:
=UNIQUE(A3:B12)
  • 格式化 B16 至 B20 以适当的格式显示日期。
  • 在 C16 中输入以下公式:
=IFNA(INDEX(C$3:C$12,MATCH(1,($A16=$A$3:$A$12)*($B16=$B$3:$B$12)*(C$3:C$12<>""),0)),"")
  • 将其拖动以填充其他单元格

结果

答案4

您还可以使用Power QueryWindows Excel 2010+ 和 Office 365 中提供的获得所需的结果。

使用 Power Query

  • 在数据表中选择一些单元格
  • Data => Get&Transform => from Table/Range
  • 当 PQ 编辑器打开时:Home => Advanced Editor
  • 记下表格姓名在第 2 行
  • 将下面的 M 代码粘贴到您所看到的位置
  • 将第 2 行的表名改回最初生成的表名。
  • 阅读评论并探索Applied Steps以了解算法

M 代码
请注意,我们做了一些额外的步骤,以便在结果中保留原始数据的顺序,因为 Pivoting 不一定会这样做

let
    //change table name in next line to the actual name in your workbook
    Source = Excel.CurrentWorkbook(){[Name="Table4"]}[Content],

    //get list of task names and "Names" so as to retain the original order
    taskNames= List.RemoveFirstN(Table.ColumnNames(Source),2),
    names = List.Distinct(Source[Name]),

    //set proper data types for Name and Date columns
    #"Changed Type" = Table.TransformColumnTypes(Source,{
        {"Name", type text}, {"Date", type date}
        }),

    //make a column arrangement of the tasks, which will remove the blanks   
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Name", "Date"}, "Attribute", "Value"),

    //Then pivot back to list in original order without unnecessary blanks.
    #"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", taskNames,
                             "Attribute", "Value", List.Sum),

    //sort names to original order
    sorted = Table.Sort(#"Pivoted Column",each List.PositionOf(names, [Name]))
in
    sorted

在此处输入图片描述

相关内容