Asp classic 从Excel到ASP复制公式的不同结果

Asp classic 从Excel到ASP复制公式的不同结果,asp-classic,excel-2003,Asp Classic,Excel 2003,我试图将一个公式从Excel工作表复制到ASP页面上,但复制了一个公式后,我得到了不同的结果(实际上是一个错误,因为ASP最终尝试将一个负数平方根) Excel处理运算符优先级的方式肯定与经典ASP相同吗 我试图复制的公式是一个简单的“T检验”(报告统计显著性-我没有创建公式),在Excel中正确工作。在Excel中,单元格看起来像 A2 = 1098 B2 = 183 A4 = 20.4 B4 = 17.49 单元格E4包含以下公式: =(A4-B4)/SQRT(((($A$2*A4)+(

我试图将一个公式从Excel工作表复制到ASP页面上,但复制了一个公式后,我得到了不同的结果(实际上是一个错误,因为ASP最终尝试将一个负数平方根)

Excel处理运算符优先级的方式肯定与经典ASP相同吗

我试图复制的公式是一个简单的“T检验”(报告统计显著性-我没有创建公式),在Excel中正确工作。在Excel中,单元格看起来像

A2 = 1098
B2 = 183

A4 = 20.4
B4 = 17.49
单元格E4包含以下公式:

=(A4-B4)/SQRT(((($A$2*A4)+($B$2*B4))/($A$2+$B$2))*
(1-((($A$2*A4)+($B$2*B4))/($A$2+$B$2)))*((1/$A$2)+(1/$B$2)))
所以,我只是简单地将这个公式复制/粘贴到经典ASP中,删除所有的$,并将SQRT更改为SQR,声明了4个变量A2、B2、A4、B4。返回错误(无效的过程调用)

如果在ASP中删除公式-(A4-B4)/SQRT-的第一部分,代码返回-2.41868099141296,而在Excel中返回0.001019435

我已经试过了,试过先分别计算公式的各个部分,然后再把它们放在一起,准备做SQRT,但要面对同样的事情

这只是一个愚蠢的错误吗?我曾经研究过负数的平方根,直到我在Excel中尝试=SQRT(-9)

我使用的ASP代码是(我在第一行和最后一行插入了换行符):

A2=cdbl(1098.0)
A4=cdbl(20.4)
B2=cdbl(183.0)
B4=cdbl(17.49)
'删除所有美元和(A4-B4)/SQRT部分
response.write“Result:&((A2*A4)+(B2*B4))/(A2+B2))*(1-((A2*A4)+(B2*B4))
/(A2+B2))*((1/A2+1/B2))和“

”`
在您的Excel工作表中,您是否正在进行任何输入验证,以防止您获取负数的根


另外,你能发布相关的ASP代码吗?这可能只是一个简单的转录错误…

我认为这是Excel总是使用浮点数和ASP使用整数的情况(f.I.1/A2-这是一个整数-可能会产生不同的结果)

尝试在整数计算中使用cDbl(…)。

我是个笨蛋

在Excel电子表格中,列A4和B4的格式为百分比。这些单元格中的实际值分别为0.204和0.1749。Excel公式在复制并粘贴(几乎)到ASP中时确实有效-我只是没有发现我的输入比预期大100倍

下面的代码可以工作

A2 = cdbl(1098.0)
A4 = cdbl(0.204)
B2 = cdbl(183.0)
B4 =cdbl(0.1749)

response.write "<p>Result: " & (A4-B4)/SQR((((A2*A4)+(B2*B4))/(A2+B2))*
(1-(((A2*A4)+(B2*B4))/(A2+B2)))*((1/A2)+(1/B2))) & "</p>"
A2=cdbl(1098.0)
A4=cdbl(0.204)
B2=cdbl(183.0)
B4=cdbl(0.1749)
response.write“Result:&(A4-B4)/SQR(((A2*A4)+(B2*B4))/(A2+B2))*
(1-((A2*A4)+(B2*B4))/(A2+B2))*((1/A2)+(1/B2)))和“


现在我只需要将其转换为一个函数。

已经发布了ASP代码,但我实际上是在公式中的$上进行搜索/替换,然后删除第一部分,这样只剩下平方根的值。我得到的结果是-2.41868099141296
A2 = cdbl(1098.0)
A4 = cdbl(0.204)
B2 = cdbl(183.0)
B4 =cdbl(0.1749)

response.write "<p>Result: " & (A4-B4)/SQR((((A2*A4)+(B2*B4))/(A2+B2))*
(1-(((A2*A4)+(B2*B4))/(A2+B2)))*((1/A2)+(1/B2))) & "</p>"