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

Excel VBA数组求和问题:外部工作簿单元格复制后数量缩减

问题解答:修改数组实现单元格求和

嘿,我来帮你理清楚这个问题!首先得说,你尝试的Array("C6"+"C7","C8","C9")这种写法行不通——这里的+号会把两个字符串直接拼接成"C6C7",Excel根本不会把它当成求和公式来解析,反而会变成一个无效的单元格引用或者文本。

下面给你两种可行的解决思路,根据你的实际需求选就行:

思路1:在数组中存储求和公式字符串

如果希望把数组内容写入活动工作簿后,单元格能自动计算求和(甚至后续原单元格数值变化时也能同步更新),你需要把数组元素写成Excel公式的格式:

' 把原来的"C6"替换成带等号的求和公式
cls = Array("=C6+C7", "C8", "C9")

当你把这个数组写入活动工作簿的单元格区域时,Excel会自动识别并计算C6+C7的结果,完美替代原来单个C6的位置,同时还能保持公式的动态性。

思路2:直接在数组中存储求和后的数值

如果不需要动态更新,只想把原工作簿中C6和C7的求和结果作为静态值存入数组,那可以在VBA里先计算好数值再放进数组:

' 先定义原工作簿对象(替换成你实际的工作簿名称)
Dim sourceWB As Workbook
Set sourceWB = Workbooks("你的可变工作簿.xlsx")

' 直接计算求和值后存入数组
Dim cls As Variant
cls = Array( _
    sourceWB.Sheets("目标工作表").Range("C6").Value + sourceWB.Sheets("目标工作表").Range("C7").Value, _
    sourceWB.Sheets("目标工作表").Range("C8").Value, _
    sourceWB.Sheets("目标工作表").Range("C9").Value _
)

' 把数组写入活动工作簿的单元格区域(示例写入A1开始的列)
ThisWorkbook.Sheets("你的活动工作表").Range("A1").Resize(UBound(cls) + 1, 1).Value = Application.Transpose(cls)

这种方式得到的数组里都是具体的数值,复制到活动工作簿后就是静态值,不会随原工作簿数据变化而改变。

另外关于你提到的“复制后单元格数量减少”的问题,用上面两种方式修改数组后,相当于把两个单元格的内容合并成一个数组元素,刚好能对应复制后减少的数量,完美解决这个匹配问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:46:33