Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


20497 / 76732 ←次へ | 前へ→

【61653】Re:近似曲線のテキストデータが読み取れない
発言  kanabun  - 09/5/24(日) 21:32 -

引用なし
パスワード
   ▼yuji さん:

>ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text
>という方法では、読み取った近似曲線の数式の桁数が5桁となってしまうようです。
>(尚、グラフ上の数式表示はちゃんと10桁で表示されます)

なるほど、そのようですね。

>  Selection.NumberFormatLocal = "0.0000000000_ "

書式を「指数表示」にしておけば桁落ちすることはないと思います。

以下は(むかし作ったものですが)対象トレンドラインをマウスで選択しておいて
実行すると、どこに計数を書き込むか聞いてきますので、
書き出し先セルを指定してください。
(近似式を得るというより、係数を得るほうがあとの補間計算に使いやすいと
思いましたので、計数だけを複数セルに分けて出力しています。)

Sub 選択TrendLineの係数を得る()
 Dim Coef    '係数を格納
 Dim c As Range

 '★グラフの系列を選択して実行すること
 If TypeName(Selection) <> "Trendline" Then
   MsgBox "近似曲線を選択して実行してください"
   Exit Sub
 End If
 
 Coef = GetCoef(Selection)

 On Error Resume Next
 Set c = Application.InputBox("書き出し先先頭セルを指定してください", Type:=8)
 On Error GoTo 0
 If Not c Is Nothing Then
   c.Resize(, UBound(Coef) + 1).Value = Coef '横方向に書き出すばあい
   'c.Resize(UBound(Coef) + 1).Value = Application.Transpose(Coef)
   Set c = Nothing
 End If
End Sub

'--- TrendLineの各係数を返す
Private Function GetCoef(TL As Trendline) As Variant
 Dim v, u
 Dim j As Long, k As Long
 Dim ss As String
 Dim disp As Boolean
 
 With TL
  disp = .DisplayEquation
  .DisplayEquation = True
  .DataLabel.NumberFormatLocal = "0.0000000E+00"
  ss = .DataLabel.Text
  .DisplayEquation = disp
 End With
 j = InStr(ss, "R2")
 If j Then ss = Left$(ss, j - 1)
 j = InStr(ss, "=")
 ss = Mid$(ss, j + 2)
 ss = Replace(ss, "+ ", "+")
 ss = Replace(ss, "- ", "-")
 Debug.Print ss
 
 Select Case TL.Type
  Case xlLinear, xlPolynomial
    v = Split(ss)
    If TL.Type = xlLinear Then k = 1 Else k = TL.Order
    ReDim u(k) As Double
    For j = 0 To k
      u(j) = Val(v(j))
    Next
    
  Case xlExponential
    ReDim u(1) As Double
    v = Split(ss, "e")
    u(0) = Val(v(0))
    u(1) = Val(v(1))
  
  Case xlPower
    ReDim u(1) As Double
    v = Split(ss, "x")
    u(0) = Val(v(0))
    u(1) = Val(v(1))
  
  Case Else
    MsgBox "Can't get Coeff from Series because of " & TL.Type
    GetCoef = False
    Exit Function
 End Select
 
 GetCoef = u
End Function

1 hits

【61647】近似曲線のテキストデータが読み取れない yuji 09/5/24(日) 15:10 質問
【61650】Re:近似曲線のテキストデータが読み取れない yoshi 09/5/24(日) 16:33 回答
【61653】Re:近似曲線のテキストデータが読み取れない kanabun 09/5/24(日) 21:32 発言
【61655】Re:近似曲線のテキストデータが読み取れない yuji 09/5/24(日) 23:28 お礼
【61654】Re:近似曲線のテキストデータが読み取れない kanabun 09/5/24(日) 23:01 発言

20497 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free