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

如何修改VBA宏以统计每20只股票的批量处理耗时?

调整VBA宏实现每20只股票批量耗时记录

我来帮你调整这个VBA宏,完美实现每处理20只股票就记录一次批量耗时的需求,具体改动和完整代码如下:

核心思路

  • 不再只统计600只股票的总时长,而是每20只作为一个批次,单独记录每批的处理耗时
  • 用变量跟踪结果写入的单元格位置,从C30开始,每写完一批自动下移一行
  • 精准判断每批的开始与结束节点,确保每20只的耗时计算准确

修改后的完整代码

Sub UpdatedRepeatMacro()
    Dim i As Integer
    Dim BatchStart As Double
    Dim rowNum As Integer ' 控制结果写入的行号
    Dim ElapsedTime As String
    
    rowNum = 30 ' 初始写入位置为C30
    
    For i = 1 To 600
        ' 每一批的第一只股票(第1、21、41...只),记录批次开始时间
        If i Mod 20 = 1 Then
            BatchStart = Timer
        End If
        
        Call Sheet4.SpinButton1_SpinDown
        DoEvents
        Application.Run "EikonRefreshWorkbook"
        DoEvents
        Application.Run "EikonRefreshWorkbook"
        DoEvents
        Call CopyPaste
        DoEvents
        
        ' 每处理完20只,计算并记录这批的耗时
        If i Mod 20 = 0 Then
            ElapsedTime = Format((Timer - BatchStart) / 86400, "hh:mm:ss:ms")
            Range("C" & rowNum).Value = ElapsedTime
            rowNum = rowNum + 1 ' 行号下移,准备写下一批结果
        End If
    Next i
    
    MsgBox "所有股票指示器已更新,每20只的批量耗时已记录在C30开始的单元格中。", vbOKOnly
End Sub

关键改动说明

  • 新增BatchStart变量:专门记录每一批20只股票的处理起始时间,替代了原来全局的Start变量,确保每批耗时计算独立不混淆。
  • 新增rowNum变量:控制结果写入的位置,初始设为30(对应C30),每写完一批自动+1,无需手动调整单元格位置。
  • 时间格式修正:去掉了原来除以86400*600的计算,因为现在我们要的是20只股票的总处理耗时,而非单只平均时间;Timer - BatchStart得到秒数,除以86400(一天的总秒数)后用Format转成时分秒毫秒格式。
  • 批量判断逻辑:用i Mod 20 = 1判断每批的开始,i Mod 20 = 0判断每批的结束,600只股票刚好分成30批,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:52:49