2010-01-21 43 views
0

我想從Excel工作表複製一個公式到一個ASP頁面,但複製了公式,我得到了不同的結果(實際上是一個錯誤,因爲ASP結束試圖平方根負數)。從Excel獲取不同的結果複製公式到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) 

' Remove all the $, and (A4-B4)/SQRT part 
response.write "<p>Result: " & ((((A2*A4)+(B2*B4))/(A2+B2))*(1-(((A2*A4)+(B2*B4)) 
/(A2+B2)))*((1/A2)+(1/B2))) & "</p>"` 

回答

2

我是dufus。

在Excel電子表格列A4和B4被格式化爲百分比。在這些細胞中的實際值分別爲0.204和0.1749。 Excel複製和粘貼(幾乎)字面上的ASP公式時工作 - 我只是沒有發現我的投入是100x年格爾比預期。

下面的代碼工作

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>" 

所以,現在我只是需要將其轉換成一個功能。

0

在您的Excel工作表中,您是否在進行任何輸入驗證,以防止您獲取負數的根?

另外,你可以發佈相關的ASP代碼?這可能僅僅是一個簡單的抄寫錯誤......

+0

已經發布了ASP代碼,但我從字面上對公式中的$進行搜索/替換,然後刪除第一部分,以便只剩下平方根的值。我得到的結果是-2.41868099141296 – Dan 2010-01-21 20:03:32

0

我認爲這是Excel的使用總是漂浮,使用整數ASP(FI 1/A2的情況下 - 這是一個整數 - 可能會產生不同的結果

嘗試使用cDbl(...)圍繞整數計算。

+0

我嘗試使用cdbl(),但結果相同。 – Dan 2010-01-21 20:04:08