• ベストアンサー

.NET エクセルで除算するには?

いつもお世話になっています。 下記環境でエクセルを出力するシステムをつくっています。 開発環境 : WindowsXP       office2003 言語   : VB.NET 出力時にエクセル上で除算してパーセンテージを表示、 分子または分母がない場合は「0」と表示、 しようとしているのですが、どうしてもエラーをはいてしまいます。 コードは、下記の通りです。 エクセル上ではうまくいくのですが、コードはNGでした。 IF(OR(" & A1 = 0 & "," & A2 = 0 & ",0," & A2 / A1 * 100 & ")" ご存知の方がおりましたら、ご教示御願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 #1以降、レスが付かないようですから、少し書かせていただきます。 一応、変数の宣言から、Excelのオートメーションの取得、End Subの最後まで書いていただいたほうがよいのでは? それと、Excel上でうまくいく行かないというよりも、 IF(OR(" & A1 = 0 & "," & A2 = 0 & ",0," & A2 / A1 * 100 & ")" VB.Net 上で、どうこうよりも、Excelに数式を書き出す目的なら、丸々文字列数式するしかないと思います。 その数式では、A1 = 0 も A2 = 0 も、VB上の変数でしかありません。

noname#117866
質問者

お礼

ご返信が遅くなり申し訳ございません。 ご回答ありがとうございました。 >一応、変数の宣言から、Excelのオートメーションの取得、End Subの>最後まで書いていただいたほうがよいのでは? →そうですね。別途ご質問させていただきます。 >VB.Net 上で、どうこうよりも、Excelに数式を書き出す目的なら、 >丸々文字列数式するしかないと思います。 >その数式では、A1 = 0 も A2 = 0 も、VB上の変数でしかありません。 →そうなんです。今回のA1、A2は変数の意味のつもりだったのですが、急いで投稿してしまい、正しくお伝えできなかったんです。 申し訳ございません。 今回は、Excelに数式を書き出す方法ではなく、 VB上で計算するように変更することとしました。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

>IF(OR(" & A1 = 0 & "," & A2 = 0 & ",0," & A2 / A1 * 100 & ")" はワークシート上の関数の形を書いたものですか。 こんな式の書き方は見たことが無い。 エクセルのセルに手打ちで式を入れる場合は =IF(OR(A1=0,A2=0),0,A2 / A1 * 100 ) のはずですが、VBAの世界へ入ってきての話なら、IF文で両セルが0かどうか判断できるでしょうし、 Sub test01() Range("C3").Formula = "=IF(OR(A1=0,A2=0),0,A2 / A1 * 100 )" End Sub でエクセルではうまくいくようですからRange("C3").のオブジェクトの特定を旨くやればうまくいくと思いますが。 Application-WorkBook-Worksheet-Rangeの階層を.をつけてコード上指定すれば。

noname#117866
質問者

お礼

お礼が遅くなり申し訳ございません。 .NET初心の為、正しく伝えきれていませんでした。 ひとまず、VB上での実計算で解決させるに至りました。 ありがとうございました。

noname#117866
質問者

補足

ご回答ありがとうございます。 今回はVBAの世界へ入ってきての話になるのですが、 >Range("C3").Formula = "=IF(OR(A1=0,A2=0),0,A2 / A1 * 100 )" で試したのですが、どんな数字でも FALSE で返ってきてしまいます。 なぜでしょう?? ちなみに、 A1,A2は数字として存在しており、DECIMAL型です。 表示したいエクセルのセルの書式設定は標準です。 もしよろしければ、解決策を教えていただけると大変たすかります。 よろしくお願い致します。

関連するQ&A