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

如何获取多个实时变动单元格的历史最低值

同行单元格历史最低值实现方法

核心逻辑非常直接:让第4个单元格始终对比自身存储的历史最小值、和前3个单元格的当前最小值,永远保留更小的数值,就能实现数值只下降、不回升的效果,根据你用的表格工具选对应方案即可。

方法1:迭代公式法(无代码,Excel/WPS通用)

不需要写宏,操作最快:

  • 先开启表格的迭代计算开关:
    • Excel路径:「文件-选项-公式」,勾选「启用迭代计算」,将最大迭代次数设置为1
    • WPS路径:「文件-选项-重新计算」,勾选「迭代计算」,迭代次数同样设为1
  • 假设3个动态数值单元格为A1、B1、C1,历史最低值输出单元格为D1,直接在D1输入以下公式回车即可:
    =IF(D1="",MIN(A1:C1),MIN(D1,MIN(A1:C1)))
    
    公式逻辑:D1为空时(第一次输入)直接取3个单元格的当前最小值;后续每次单元格数值刷新,都会自动拿D1存的历史最低值和3个单元格的当前最小值对比,只有当前最小值更小的时候才更新D1的数值。

注意:使用该方法时不要手动清空D1单元格,否则历史最低值会重置为清空时刻的3个单元格最小值。

方法2:VBA事件法(稳定性更高,适合长期使用的表格)

如果怕迭代开关被误关导致逻辑失效,可以用工作表事件触发实现,不需要依赖迭代设置:

  • 按快捷键Alt+F11调出VBA编辑器,在左侧资源栏双击你需要设置的对应工作表,在弹出的代码窗口粘贴以下代码:
    Private Sub Worksheet_Change(ByVal Target As Range)
        ' 监控A1:C1范围的数值变动
        If Not Intersect(Target, Range("A1:C1")) Is Nothing Then
            Application.EnableEvents = False
            currMin = Application.WorksheetFunction.Min(Range("A1:C1"))
            ' D1为空时直接赋值,否则仅当当前最小值小于历史值时更新
            If Range("D1") = "" Then
                Range("D1") = currMin
            ElseIf currMin < Range("D1") Then
                Range("D1") = currMin
            End If
            Application.EnableEvents = True
        End If
    End Sub
    
  • 保存文件时选择「启用宏的工作簿(.xlsm)」格式即可,后续只要A1-C1数值变动,D1会自动更新历史最低,不会因为设置变动失效。

在线协作文档适配(飞书/腾讯文档/Google Sheets)

如果用的是在线表格,操作更简单:

  • 飞书、腾讯文档默认支持循环引用迭代,直接在D1单元格输入上面提到的迭代公式即可生效,不需要额外改设置。
  • Google Sheets需要先点「文件-设置-计算」,开启迭代计算并将最大迭代次数设为1,再输入公式即可。

内容的提问来源于stack exchange,提问作者Frank Boon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:03:33