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
相关产品推荐
相关产品推荐

