下面是一个简单的SumIf
我要计算的地方sumif >=
变量 k
声明为 Double
.
然而,这返回 0。如果我更改 k
对于任何整数、3、4 等,它返回 true
值(value)。但如果我改变 k
对于 4.23983
它返回 0
.
我已经尝试声明另一个 Double
变量(假设 a
)并放入 a = sumif(...)
.但这给了我0
也是。我也试过"">="& k &"""
但这也不起作用(在 Google 上找到)。
Worksheets("ES").Cells(j + 10, 6).Value = Application.WorksheetFunction.SumIf(Worksheets("help").Range("A1:A4273"), ">=" & k, Worksheets("help").Range("A1:A4273"))
最佳答案
最后编辑。根据评论,情况需要从欧洲格式转换为美国格式进行计算。有关使用的大量代码,请参阅此帖子:
VBA - Evaluate Conditions as String
这是一个可以添加到模块并在工作表中自由使用的函数:
Function EuroSumIf(ByVal CellRange As Range, ByVal Condition As String, ByVal CompareVal As Double) As Double
Dim cond As String
Dim vx As MSScriptControl.ScriptControl
Set vx = New MSScriptControl.ScriptControl
Dim sum As Double
For Each cell In CellRange.Cells
a = cell.Value
b = CompareVal
If InStr(1, a, ".", vbTextCompare) > -1 Then
a = Replace(a, ".", "")
End If
If InStr(1, a, ",", vbTextCompare) > -1 Then
a = Replace(a, ",", ".")
End If
cond = "(a" & Condition & "b)"
'MsgBox (cond & vbLf & a & Condition & b)
With vx
.Language = "VBScript"
.AddCode "function stub(a,b): stub=" & cond & ": end function"
If .Run("stub", a, b) Then
sum = sum + a
End If
End With
Next
EuroSumIf = sum
End Function
使用如下:
=EuroSumIf(A1:A3,">",0)
关于vba - 为什么 SumIf 在 VBA 中使用 Double 返回 0 并使用整数返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872450/