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

Excel函数需求:特定时段清零数值并转移至下方144行

Excel操作解决方案:时间区间对应的G列数值调整

方案一:使用VBA宏(批量自动处理)

适合一次性处理所有数据的场景,步骤如下:

  1. 打开目标Excel文件,按下Alt + F11打开VBA编辑器
  2. 在左侧「工程资源管理器」中找到你的工作表(如Sheet1),右键点击→「插入」→「模块」
  3. 将以下代码粘贴到模块窗口中:
Sub AdjustGColumn()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim targetRow As Long
    Dim cellValue As Double
    
    ' 替换为你的工作表名称,比如"数据Sheet"
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    ' 获取C列最后一行有数据的行号
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
    
    ' 遍历C列数据行(若表头在第1行,将1改为2)
    For i = 1 To lastRow
        ' 判断时间是否在21:00-次日3:00区间
        If (ws.Cells(i, "C").Value >= TimeValue("21:00:00")) Or (ws.Cells(i, "C").Value <= TimeValue("03:00:00")) Then
            cellValue = ws.Cells(i, "G").Value
            If cellValue <> 0 Then
                targetRow = i + 144
                ' 确保目标行不超出工作表范围
                If targetRow <= ws.Rows.Count Then
                    ws.Cells(targetRow, "G").Value = ws.Cells(targetRow, "G").Value + cellValue
                    ws.Cells(i, "G").Value = 0
                End If
            End If
        End If
    Next i
End Sub
  1. 修改代码中的"Sheet1"为你的实际工作表名称;如果数据从第2行开始(第1行是表头),把For i = 1 To lastRow改为For i = 2 To lastRow
  2. 按下F5运行宏,或回到Excel界面,点击「开发工具」→「宏」→选择AdjustGColumn→「执行」

注意事项

  • 运行前务必备份文件,避免数据丢失
  • 若Excel禁用了宏,需要在「文件」→「选项」→「信任中心」→「信任中心设置」中启用宏

方案二:使用辅助列+公式(无需宏)

适合不想启用宏的场景,步骤如下:

  1. 在表格右侧插入两个辅助列(比如H列和I列)
  2. H列表头输入「调整后G值」,在H2单元格输入公式(假设数据从第2行开始):
=IF(OR(C2>=TIME(21,0,0),C2<=TIME(3,0,0)),0,G2)
  1. I列表头输入「待累加数值」,在I2单元格输入公式:
=IF(OR(C2>=TIME(21,0,0),C2<=TIME(3,0,0)),G2,0)
  1. 选中H2和I2单元格,下拉填充到所有数据行
  2. 选中I列所有数据,按下Ctrl + C复制
  3. 选中G列中对应下方144行的单元格范围(比如I2对应G146,I3对应G147,以此类推),右键→「选择性粘贴」→选择「加」→「确定」,完成数值累加
  4. 选中H列所有数据,复制后粘贴到G列(右键→「选择性粘贴」→「值」),最后可删除H、I辅助列

内容的提问来源于stack exchange,提问作者Žunec Marcel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:40:34