错误13 - 类型不匹配,一起添加2列

时间:2017-05-16 18:59:00

标签: excel vba

我猜我无法逃脱这个?

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

2 个答案:

答案 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