- ベストアンサー
符号付きの係数の出力(散布図近似式)
- 質問者は、散布図近似式の5次の式の係数をセルに出力するマクロの作成方法を知りたいとしています。
- 現在のコードでは、係数の数字のみが出力され、符号は出力されません。
- 質問者は、符号付きの係数を出力する方法についてアドバイスを求めています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下記のようなことでしょうか。 詳しくは検討していません検討の余地があると思います。 Sub test2() Dim str As String Dim strv As Variant Dim i As Integer str = "y = 0.0452x5 - 8.6275x4 + 658.58x3 - 25133x2 + 4795.20x - 4E+0.6" strv = Split(str, " ") For i = 0 To UBound(strv) If strv(i) Like "*E+*" Then If strv(i - 1) = "-" Then MsgBox strv(i - 1) & strv(i) Else MsgBox strv(i) End If Else If Val(strv(i)) > 0 Then If strv(i - 1) = "-" Then MsgBox strv(i - 1) & Val(strv(i)) Else MsgBox Val(strv(i)) End If End If End If Next i End Sub
その他の回答 (2)
- xls88
- ベストアンサー率56% (669/1189)
>Abs関数の追加の意味は何でしょうか? If Val(strv(i)) > 0 Then Val(strv(i))がマイナス値の場合、0より大きくないので飛ばされてしまいます。 Abs関数で絶対数値を取り出しています。 >出力数値ににもともと負記号(-)がつかないので直したいのですが。 >冗長なコードを組めば可能ですが、簡潔なコード化は無理でしょうか。 意味が分かりません、今回の質問とどう関係しているのでしょうか?
補足
Val(strv(i))がマイナス値の場合 出力値 にマイナス(-)符号をつけたいのです。 近似式は係数の両端に””があるために負数も絶対値が戻ってしまいます。 y = 0.0735x5 -14.126x4 +1085.7x3 -41721x2 + 801538x -6E+06ならOKですが 下記が散布図に記されている式です。 y = 0.0452x5 - 8.6275x4 + 658.58x3 - 25133x2 + 4795.20x - 4E+0.6
- xls88
- ベストアンサー率56% (669/1189)
If文にAbs関数を追加してみます。 Sub test2() Dim str As String Dim strv As Variant Dim i As Integer str = "y = -0.0452x5 - -8.6275x4 + 658.58x3 - 25133x2 + 4795.20x - 4E+0.6" strv = Split(str, " ") For i = 0 To UBound(strv) If strv(i) Like "*E+*" Then MsgBox strv(i) Else If Abs(Val(strv(i))) > 0 Then MsgBox Val(strv(i)) End If End If Next i End Sub
補足
ご返信ありがとうございました。Abs関数の追加の意味は何でしょうか? 出力数値ににもともと負記号(-)がつかないので直したいのですが。冗長なコードを組めば可能ですが、簡潔なコード化は無理でしょうか。
お礼
ありがとうございました。 間違いなくOKでした。 kTrendCoe関数は使いたくなかったので助かりました。