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

VBA跨多工作表汇总位置动态变化单元格数值求助

VBA Excel模板跨表汇总问题说明

我是VBA初学者,近期正在对办公室高频使用的Excel模板做自动化改造:原模板内置大量带复制粘贴公式的彩色单元格,用户自行调整表格尺寸时经常导致公式错乱。

已落地功能

  • 支持动态生成表格:用户只需输入项目所需站点数量(决定表格所需行数),点击创建按钮后即可通过预置代码自动生成完整表格
  • 预置多工作表适配多表格场景:模板内提前配置了5个工作表,避免用户自行复制工作表时出现宏无法关联的问题,所有同事可直接使用

当前待解决需求与难点

  • 需求:在首页汇总所有工作表表格内的各类材料(如清表、路堑开挖等)总用量
  • 核心难点:每个工作表中需要求和的合计单元格所在行号不固定,会随该表设置的站点数量动态变化,无法使用固定单元格地址完成跨表求和
  • 个人基础说明:自学VBA总时长仅8小时左右,编码经验不足,需要可参考的落地方案

现有表格自动生成VBA代码

Sub Test()
    
    Dim x As Integer
    x = Range("Y3").Value
    
    Range("c8:e8").Copy Range("C9:E" & (x + 8 - 2))
    Range("g8:i8").Copy Range("g9:i" & (x + 8 - 2))
    Range("k8:m8").Copy Range("k9:m" & (x + 8 - 2))
    Range("o8:q8").Copy Range("o9:q" & (x + 8 - 2))
    Range("s8:u8").Copy Range("s9:u" & (x + 8 - 2))
    
    Range("C" & (x + 8 - 1), "E" & (x + 8 - 1)).Value = "-"
    Range("g" & (x + 8 - 1), "i" & (x + 8 - 1)).Value = "-"
    Range("k" & (x + 8 - 1), "m" & (x + 8 - 1)).Value = "-"
    Range("o" & (x + 8 - 1), "q" & (x + 8 - 1)).Value = "-"
    Range("s" & (x + 8 - 1), "u" & (x + 8 - 1)).Value = "-"
    
    Range("B" & (x + 8), "D" & (x + 8)).Value = "sum row"
    Range("F" & (x + 8), "H" & (x + 8)).Value = "sum row"
    Range("J" & (x + 8), "L" & (x + 8)).Value = "sum row"
    Range("N" & (x + 8), "P" & (x + 8)).Value = "sum row"
    Range("R" & (x + 8), "T" & (x + 8)).Value = "sum row"
    
    'lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
        
    Range("E" & (x + 8)).Value = "=SUM(E8:E" & (x + 6) & ")"
    Range("I" & (x + 8)).Value = "=SUM(I8:I" & (x + 6) & ")"
    Range("M" & (x + 8)).Value = "=SUM(M8:M" & (x + 6) & ")"
    Range("Q" & (x + 8)).Value = "=SUM(Q8:Q" & (x + 6) & ")"
    Range("U" & (x + 8)).Value = "=SUM(U8:U" & (x + 6) & ")"
    
    Range("E" & (x + 9)).Value = "Border"
    Range("I" & (x + 9)).Value = "Border"
    Range("M" & (x + 9)).Value = "Border"
    Range("Q" & (x + 9)).Value = "Border"
    Range("U" & (x + 9)).Value = "Border"
       
    Range("A" & (x + 8)).Value = "TOTALS"
    
End Sub

功能演示

附操作演示动图(画质较低,仅用于直观展示已实现的基础功能):
操作演示


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:45:37