0

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)

' 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>"`
4

3 に答える 3

2

私はダフです。

Excel スプレッドシートの列 A4 と B4 はパーセンテージとして書式設定されています。これらのセルの実際の値は、それぞれ 0.204 と 0.1749 です。Excel の数式は、ASP に (ほぼ) 文字どおりにコピー アンド ペーストすると機能します。

次のコードが機能します

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

だから今、それを関数に変換する必要があります。

于 2010-01-21T20:33:17.523 に答える
0

Excel シートで、負の数の根を得るのを妨げている入力検証を行っていますか?

また、関連する ASP コードを投稿していただけますか? ただの転記ミスかも…

于 2010-01-21T18:01:06.483 に答える
0

Excel が常に浮動小数点数を使用し、ASP が整数を使用している場合だと思います (整数である fi 1/A2 は異なる結果を生成する可能性があります。

整数計算の前後で cDbl( ... ) を使用してみてください。

于 2010-01-21T18:01:41.283 に答える