如何在Excel中合并行?(大数据集)

jei2mxaa  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(121)

我有一个很大的数据集(〉79000行)。我的数据集看起来像这样:
| Col1|样品1|样品2|样品3|
| --------------|--------------|--------------|--------------|
| sp1|0.1|0.5|1.2|
| sp2|1|2.1|四|
| sp3|二|三|0.75|
| sp1|1|四|1|
我想合并物种列中的重复列,同时对样本列中的值求和,因此我的数据集将如下所示:
| Col1|样品1|样品2|样品3|
| --------------|--------------|--------------|--------------|
| sp1|1.1|四点五|2.2|
| sp2|1|2.1|四|
| sp3|二|三|0.75|
我试过在Excel中使用合并函数,但加载后它没有产生任何东西(我会选择我的引用和“总和”函数,我等待,加载后,新表中没有出现任何东西)。

vyswwuz2

vyswwuz21#

如上所述,使用Power Query可以执行优雅,没有任何问题。可能有更多雄辩的解决方案,但我个人将在处理较大的数据集时使用Power Query,其中我需要Groupbyduplicatessumtherespective values注意,这是一次性的方法,下次在您的源数据中添加新数据时,只需使用Power Query*刷新导入的表即可。
也就是说,您可以按照以下步骤使用Power Query执行任务
·选择数据表中的某个单元格,
·数据标签=〉获取和变换=〉从表/范围
·当PQ Editor打开时:首页=〉高级编辑器
·记下所有表名
·将下面的M代码粘贴到您所看到的位置。

方式一:

let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Col1"}, {{"Sample1", each List.Sum([Sampl1]), type number}, {"Sample2", each List.Sum([Sampl2]), type number}, {"Sample3", each List.Sum([Sampl3]), type number}})
in
    #"Grouped Rows"

或者方法二:

let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Col1"}, "Attribute", "Value"),
    #"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", List.Distinct(#"Unpivoted Other Columns"[Attribute]), "Attribute", "Value", List.Sum)
in
    #"Pivoted Column"

两个都可以用,但用第二个会更简洁。
·在将表导入回Excel之前,根据需要更改表名称。
·从首页Tab =〉关闭并加载=〉关闭并加载到
·* 导入时,可以选择要放置表格的单元格引用的现有工作表**,也可以点击新建工作表

方法一--〉截图

方法二--〉截图

使用新MS 365函数Excel公式替代方法。- —〉
减少独特的collambdavstackhstack

·单元格F1中使用的公式

=REDUCE(A1:D1,UNIQUE(A2:A5),
LAMBDA(x,y,VSTACK(x,HSTACK(y,
BYCOL(B2:D5,LAMBDA(m,SUM((A2:A5=y)*m)))))))

公式方法对我来说也很好,用86017行数据进行了测试,这里是**sample workbook**。

jum4pzuy

jum4pzuy2#

更简单的公式是UNIQUE和SUMIFS:
F5 =UNIQUE(A5:A8)
G5 =SUMIF($A$5:$A$8,$F5,B$5:B$8)-拖动或复制这个,只要你需要。
或者创建一个数据透视表,行部分中有Col 1,还有Sampl 1、Sampl 2等。在“值”部分。

g2ieeal7

g2ieeal73#

对唯一数据求和

=LET(data,A2:D7,
    du,INDEX(data,,1),u,UNIQUE(du),dv,DROP(data,,1),
    dr,DROP(REDUCE("",SEQUENCE(ROWS(u)),LAMBDA(rr,r,
        LET(f,FILTER(dv,du=INDEX(u,r)),
            VSTACK(rr,BYCOL(f,LAMBDA(c,SUM(c))))))),1),
HSTACK(u,dr))

相关问题