为什么SumIf在Double中返回0,并在VBA中返回true和integer?

下面是一个简单的SumIf计算,我希望sumif >=variablesk被声明为Double

然而,这返回0.如果我改变k为任何整数,3,4等,它返回true值。 但是如果我改变k4.23983它返回0

我已经试图声明另一个Doublevariables(让我们说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 – 评估条件作为string

这是一个可以添加到模块并在工作表中自由使用的function:

 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)