Excel 尝试定义任何类型的函数时未定义函数
我试图得到两个范围之间的绝对差,如果它们有相同数量的元素 尝试将重写作为私有和正常功能,但不起作用Excel 尝试定义任何类型的函数时未定义函数,excel,vba,Excel,Vba,我试图得到两个范围之间的绝对差,如果它们有相同数量的元素 尝试将重写作为私有和正常功能,但不起作用 Function absDiff(rng1 As Range, rng2 As Range) As Single Dim rng1Count As Long, rng2Count As Long rng1Count = rng1.Count rng2Count = rng2.Count If rng1Count = rng2Count Then absDiff = SumProduct
Function absDiff(rng1 As Range, rng2 As Range) As Single
Dim rng1Count As Long, rng2Count As Long
rng1Count = rng1.Count
rng2Count = rng2.Count
If rng1Count = rng2Count Then
absDiff = SumProduct(Abs(rng1 - rng2))
Else
MsgBox "Error, ranges are not the same size"
End If
End Function
我希望这个函数能够获得绝对的差异,但它甚至没有运行,它是在module1上定义的,我试图将它调用到同一个模块中的子模块
Sub calcAbsdiff()
Dim rng1 As Range, rng2 As Range
Set rng1 = Range("A1:A10")
Set rng2 = Range("B1:B10")
rng1 = WorksheetFunction.RandBetween(1, 100)
rng2 = WorksheetFunction.RandBetween(1, 100)
MsgBox "The sum of the absolute difference is " & absDiff(rng1, rng2)
End Sub
我理解的是,试试这个:
Public Function absDiff(rng1 As Range, rng2 As Range) As Single
Dim rng1Count As Long, rng2Count As Long, i As Long
rng1Count = rng1.Count
rng2Count = rng2.Count
absDiff = 0
If rng1Count = rng2Count Then
For i = 1 To rng1Count
absDiff = Abs(rng1(i).Value2 * rng2(i).Value2) + absDiff
Next i
Else
MsgBox "Error, ranges are not the same size"
absDiff = "Error"
End If
End Function
似乎他的问题是,您直接对范围进行的计算不起作用,所以只需循环sum乘积即可。你会得到一个#值!如果范围不匹配,则会导致错误。(如果不是,则为0)
检查一个是否足以完成该功能
希望有帮助 您是否在调试模式下单步执行了代码?会发生什么?执行
calcAbsdiff
中的哪些语句?调用absDiff
时(在调试模式下)出现任何错误消息?您希望rng.count返回什么?总计还是您正在尝试计数单元格?当我尝试在调试模式下执行时,它会立即显示上面提到的错误消息我正在尝试计数单元格以设置if语句@JvdVIn您的公式Abs(rng1-rng2)
因为rng1
和rng2
是范围(因此没有数值…)将不起作用。你想干什么?