2014-03-01 22 views
0

我在使用逗号作为小数点符号的系统下运行我的代码时出现问题。如果有小数点(点) - 我没有问题。 我的功能计算在一定时期内客户的营业额。日期以星期和星期几形式存储在一个单元格中作为十进制数字。 有没有解决方案让我的功能与两个十进制数字格式一起工作?当小数点符号为逗号时,函数返回错误2015

这里是简化的代码:

Sub Calculation() 
    Dim Customer As String: Customer = "Customer1" 
    Dim FromValue As Double: FromValue = 1.2 'week number 1 - Tuesday 
    Dim ToValue As Double: ToValue = 6.4 'week number 6 - Thursday 
    Debug.Print Formula1(Customer, FromValue, ToValue) 
End Sub 

Function Formula1(Customer As String, FirstDate, LastDate) 
'Range ("G6:G100") contains quantity 
'Range ("AD6:AD100") contains price per 1 piece 
'Range ("A6:A100") contains customer's name 
'Range ("K6:K100") contains week and day of week 
Formula1 = Evaluate("=SumProduct(" & Range("G6:G100").Address & "," _ 
      & Range("AD6:AD100").Address & "," _ 
      & "--(ISNUMBER(FIND(" & Chr(34) & Customer & Chr(34) & "," & Range("A6:A100").Address & ")))," _ 
      & "--(" & Range("K6:K100").Address & ">=" & FirstDate & ")," _ 
      & "--(" & Range("K6:K100").Address & "<=" & LastDate & "))") 
'=SumProduct($G$6:$G$100,$AD$6:$AD$100,--(ISNUMBER(FIND("Customer1",$A$6:$A$100))),--($K$6:$K$100>=1.2),--($K$6:$K$100<=6.4)) 
End Function 

P.S.对不起,我的英语

+0

1)刚刚测试你的代码(我有逗号作为小数分隔符),它的工作原理2)[评估返回错误2015](http://stackoverflow.com/questions/22014093/excel-vba-find-string-error -2015/22015934#22015934)当参与计算的单元格出现错误“#VALUE!”时 - 请检查G6:G100,AD6:AD100等单元格的内容。 3)当你可以简单地使用'Evaluate(“= SumProduct(G6:G100))时,为什么使用'Evaluate(”= SumProduct(“&Range(”G6:G100“)。Address& ...“)'? –

+0

即使这个简单的代码返回错误2015时,十进制是逗号。 - (B1:B10> =“&FromValue&”))“) Debug.Print”= SumProduct(A1:A10, - (B1:B10> =“&FromValue&”))“ End Sub' – user3368935

回答

0

我自己找到了解决方案。问题在于数据类型 - 如果FromValue和ToValue的数据类型是Double函数只能用点作为小数。当我将数据类型更改为文本时 - 函数同时使用逗号和点作为小数点符号。

相关问题