Excel批量处理1573组日期-值列,计算同日期对应值总和
高效汇总多组日期-值列的相同日期总和方法
方法1:Power Query(推荐,无代码、可刷新)
这是处理大量列最省心的方案:
- 选中整个数据区域(包含第一列的基准日期),点击「数据」选项卡 → 「从表格/区域」,确认勾选「我的表格有标题」。
- 在Power Query编辑器中,选中所有日期-值组列(从第二列开始的所有列),点击「转换」→ 「逆透视列」→ 「逆透视成对列」,设置属性列为「组日期」、值列为「组值」。
- 添加自定义列:输入公式
=if [基准日期] = [组日期] then [组值] else 0(替换「基准日期」为你第一列的实际表头)。 - 点击「开始」→ 「分组依据」,分组列选择「基准日期」,新列名设为「总和」,操作选择「求和」,列选择自定义列的名称。
- 关闭并上载到Excel,后续数据更新只需右键点击表格 → 「刷新」。
方法2:动态数组公式(快速实现)
假设第一列(A列)是基准日期,从B列开始是「日期-值」组(B=日期1、C=值1,D=日期2、E=值2...):
- 在A列对应的结果单元格(比如B2)输入公式:
=SUM(IF($B$2:$XFD$186=A2,$C$2:$XFE$186,0)) - 新版Excel直接回车即可自动填充,旧版Excel按 Ctrl+Shift+Enter 触发数组公式后下拉填充。
- 说明:
$B$2:$XFD$186是所有组的日期列范围,$C$2:$XFE$186是对应的值列范围,确保两个范围行数一致。
方法3:VBA宏(批量自动化)
适合需要重复执行该操作的场景:
- 按
Alt+F11打开VBA编辑器,插入新模块。 - 粘贴以下代码:
Sub SumSameDates() Dim ws As Worksheet Dim lastRow As Long, lastCol As Long Dim dateArr(), resultArr() Dim i As Long, j As Long, k As Long Dim total As Double Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column dateArr = ws.Range("A2:A" & lastRow).Value ReDim resultArr(1 To UBound(dateArr, 1), 1 To 1) For i = 1 To UBound(dateArr, 1) total = 0 ' 遍历每组日期-值列(步长2) For j = 2 To lastCol Step 2 For k = 2 To lastRow If ws.Cells(k, j).Value = dateArr(i, 1) Then total = total + ws.Cells(k, j + 1).Value End If Next k Next j resultArr(i, 1) = total Next i ' 将结果写入B列,可自行修改目标列 ws.Range("B2:B" & lastRow).Value = resultArr MsgBox "汇总完成!" End Sub
- 返回Excel,按
F5运行宏,结果会自动写入B列。
内容的提问来源于stack exchange,提问作者David Bock
相关产品推荐
相关产品推荐

