为什么在 VBA 中 运行 以下公式时出现 "Type Mismatch" 错误?

Why am I getting a "Type Mismatch" error when running the following formula in VBA?

ROUND(SUMIFS($L$3:$L$14,$K$3:$K$14,0.5)/1000,0)

Dim A As Range
Dim B As Range
Set A = Range("L" & FirstRow, "L" & LastRow2)
Set B = Range("K" & FirstRow, "K" & LastRow2)

Range("T7").Formula = "=Round(SumIfs(" & A & "," & B & ",0.5)/1000,0)"

您的类型不匹配,因为 range.formula 需要 String value 而您正在组合 Range with String,这会导致错误。要解决它,rediming 你的变量从 Range to String 就可以了,例如:

Dim lastrow As Long, firstrow As Long
Dim A As String
Dim B As String

firstrow = 1
lastrow = 20

A = "L" & CStr(firstrow) & ":L" & CStr(lastrow)
B = "K" & CStr(firstrow) & ":K" & CStr(lastrow)

Range("B7").Formula = "=Round(SumIfs(" & A & "," & B & ",0.5)/1000,0)"

尝试:

Range("T7").Formula = "=Round(SumIfs(" & A.Address & "," & B.Address & ",0.5)/1000,0)"

错误解释:

你的线路

Range("T7").Formula = "=Round(SumIfs(" & A & "," & B & ",0.5)/1000,0)"

相当于

Range("T7").Formula = "=Round(SumIfs(" & A.Value & "," & B.Value & ",0.5)/1000,0)"

因为 .Value 是 VBA 中 Range 对象的默认值 属性。

由于 AB 都是多连续单元格范围,因此 .Value returns 这些范围的所有值的二维数组。因此,您试图将 String 连接到二维数组,导致类型不匹配。