我猜我无法逃脱这个?
Workbooks(ms).Sheets(fm).Range("H1:H50000").Value = Workbooks(ss).Sheets(cl).Range("I1:I50000").Value + Workbooks(ss).Sheets(cl).Range("J1:J50000").Value
尝试将新列作为其他两个值的总和。为什么不让我这么做?
另外,下面的工作正常。只是当我尝试添加2列时:
Workbooks(ms).Sheets(fm).Range("A1:A50000").Value = Workbooks(ss).Sheets(cl).Range("M1:M50000").Value
答案 0 :(得分:3)
Range.value是Variant类型,或者基本上是一个数组。您在底部示例中所做的是将一个数组(A列)复制到另一个数组(M列)。
然而,数组操作并没有扩展到对数组内部的值进行算术运算,就像您期望从第一个示例获得的那样。那么对数组求和的最佳方法是什么?
事实证明,即使您使用VBA进行编程,您也可以访问所有Excel功能,而Excel在范围内进行数学运算时非常擅长。我推荐的选项是将H设置为如下公式:
Workbooks(ms).Sheets(fm).Range("H1:H50000").Formula = "='[ss]cl'!I1+'[ss]cl'!J1"
如果您想将单元格设置为值,请添加第二行:
Workbooks(ms).Sheets(fm).Range("H1:H50000").Value2 = Workbooks(ms).Sheets(fm).Range("H1:H50000").Value2
答案 1 :(得分:1)
我想你可能需要以某种方式做一个数组。我认为错误是因为虽然您可以设置Range(A1:A10).Value
= Range(B1:B10).Value
,但尝试... = Range(B1:B10).Value + Range(C1:C10).Value
,VBA并不真正理解发生了什么......
尝试循环遍历每个单元格:
Dim i As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Workbooks(ss).Sheets(cl)
For i = 1 To 50000
Workbooks(ms).Sheets(fm).Range("H" & i).Value = .Range("I" & i).Value + .Range("J" & i).Value
Next i
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic