You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel可溢出MAXIFS优化:万行数据计算提速方案咨询

高效计算日期分组的运行最大值方案

针对万行数据下MAP+MAXIFS数组公式运行缓慢的问题,提供以下两种更高效的实现方式:

一、Excel公式方案(SCAN函数)

利用SCAN逐行累计计算的特性,跟踪当前日期对应的最大利润值,避免MAXIFS重复扫描范围的高开销,时间复杂度优化为O(n),万行数据下性能显著提升。

公式示例(自动溢出整列):

=SCAN(0, SEQUENCE(ROWS(I1#)), LAMBDA(acc, n, 
    LET(
        curr_date, INDEX(I1#, n),
        curr_k, INDEX(K1#, n),
        prev_date, IF(n>1, INDEX(I1#, n-1), ""),
        IF(curr_date=prev_date, MAX(acc, MAX(0, curr_k)), MAX(0, curr_k))
    )
))
  • 说明:I1#为日期列的溢出数组,K1#为汇总利润列的溢出数组;公式会自动计算并填充整列,当日期变化时自动重置最大值。

二、VBA方案

通过VBA直接遍历数据行,跟踪当前日期的最大利润值,运行速度最快,适合超大规模数据(十万行以上也能快速完成)。

VBA代码示例:

Sub CalculateDateGroupedRunningMax()
    Dim targetWS As Worksheet
    Dim lastDataRow As Long
    Dim rowIndex As Long
    Dim currentTrackDate As Variant
    Dim currentMaxProfit As Double
    
    ' 指定目标工作表,替换为你的表名
    Set targetWS = ThisWorkbook.Worksheets("Sheet1")
    lastDataRow = targetWS.Cells(targetWS.Rows.Count, "I").End(xlUp).Row
    
    ' 初始化第一行数据
    currentTrackDate = targetWS.Range("I1").Value
    currentMaxProfit = Application.Max(0, targetWS.Range("K1").Value)
    targetWS.Range("Z1").Value = currentMaxProfit
    
    ' 从第二行开始遍历计算
    For rowIndex = 2 To lastDataRow
        With targetWS
            If .Range("I" & rowIndex).Value = currentTrackDate Then
                ' 同一日期,更新最大值
                currentMaxProfit = Application.Max(currentMaxProfit, Application.Max(0, .Range("K" & rowIndex).Value))
            Else
                ' 日期变化,重置跟踪值
                currentTrackDate = .Range("I" & rowIndex).Value
                currentMaxProfit = Application.Max(0, .Range("K" & rowIndex).Value)
            End If
            .Range("Z" & rowIndex).Value = currentMaxProfit
        End With
    Next rowIndex
End Sub
  • 使用方法:按下Alt+F11打开VBA编辑器,插入模块,粘贴代码,修改targetWS的工作表名后运行即可。

内容的提问来源于stack exchange,提问作者Dario Luca Spitale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:26:14