• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2000マクロ 2つの近似線の接点を求める。)

Excel2000マクロで2つの近似線の接点を求める方法

このQ&Aのポイント
  • Excel2000マクロを使用して、散布図上に表示された2つの近似線の接点の値を求める方法について知りたいです。
  • データの範囲として、A1からA5とB1からB5が近似線1のデータ範囲であり、A8からA12とB8からB12が近似線2のデータ範囲です。
  • 近似線1の傾きはSLOPE関数を使用して求めることができます。また、切片はINTERCEPT関数を使用して求めることができます。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

数学は苦手です.... > 近似線1は、A1:A5、B1:B5で前回と同じ、 直線の方程式: y = Ax + B ・近似線1(直線?) A1:A5、B1:B5  傾きA =SLOPE(B1:B5,A1:A5)   --->1  切片B =INTERCEPT(B1:B5,A1:A5) --->9.02  なので、    y = x + 9.02 --- (1) > 近似線2の方が今回変わってY値が固定で(今回は12)Xの値を調べる計算式  X 値の変化に係わらず常に Y 値が 12 ...これって傾き 0 のことですよね?  つまり、  y = 0x + 12 ---> y = 12  単純に(1)の数式に y を代入するだけじゃ?    12 = x + 9.02  x = 12 - 9.02  x = 2.98 です。#1 の回答を生かすなら、ワークシート上で A列(X)__B列(Y) 1____10.1 2____10.9 3____12.1 4____12.9 5____14.1 6____空白 7____空白 8____12 9____12 10____12 11____12 12____12 とデータ修正するだけです。 余談ですが、連立方程式を VBA で解くには...   y = Ax + B   y = Cx + D   Ax + B = Cx + D   (A - C)x = (D - B)   x = (D - B) / (A - C) で x 値が求まりますので、それを元の方程式のどちらかに代入すれば y が決まります。 ワークシート上の数式で十分解を求めることは可能ですが、#1 は VBA で... というご希望だったので、上記をそのまま VBA で書いてるだけです。 それほど難しいことをやっているわけではありません。じっくりと、#1 の コードがどのような仕組みになっているのか、ご自分で考えてみて下さい。 大丈夫。きっと難しそうに見えてるだけです。 > 出来れば逆のパターンでX値が固定でYの値を調べる計算式も欲しいです。 考え方さえわかってしまえば、あとは応用です。頑張って下さいね(^^)ノ

hibohibo
質問者

お礼

KenKen_SP様回答ありがとう御座います。 私の弱い頭でもようやくX値は出すことが出来ました。 (でも、Y値の方はまだです。) 今回も、勉強になる回答ありがとう御座いました。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

すみません、正直 Slope とか近似線とか良くわかってないですけど。 > 傾き =SLOPE(B1:B5,A1:A5) > 切片 =INTERCEPT(B1:B5,A1:A5) これで、各線の正しい傾きと切片が得られるのであれば、次のような 感じでどうですか? 私にはこれが正しいのかどうかもわかりません が、2直線の交点を求めるということであれば、得られた直線の連立 方程式をそのまま解けば良い気がします。 Sub Test()   Dim a1 As Double, b1 As Double   Dim a2 As Double, b2 As Double   Dim x As Double, y As Double        '傾き =SLOPE(B1:B5,A1:A5)   '切片 =INTERCEPT(B1:B5,A1:A5)   a1 = Application.Slope(Range("B1:B5"), Range("A1:A5"))   b1 = Application.Intercept(Range("B1:B5"), Range("A1:A5"))      '傾き =SLOPE(B8:B12,A8:A12)   '切片 =INTERCEPT(B8:B12,A8:A12)   a2 = Application.Slope(Range("B8:B12"), Range("A8:A12"))   b2 = Application.Intercept(Range("B8:B12"), Range("A8:A12"))      x = (b2 - b1) / (a1 - a2)   y = a1 * x + b1   MsgBox "X:=" & CStr(x) & vbLf & "Y:=" & CStr(y)    End Sub

hibohibo
質問者

お礼

KenKen_SP様回答ありがとう御座います。 接点の値がxが5.999位、Yが15.02とバッチリでした。 直線の連立方程式を使うのですね、良い勉強になりましたありがとう御座います。 (補足で又質問するかも知れませんがその時は宜しくお願いします。)

hibohibo
質問者

補足

KenKen_SP様宜しければ計算式を教えて下さい。 近似線1は、A1:A5、B1:B5で前回と同じ、近似線2の方が今回変わって Y値が固定で(今回は12)Xの値を調べる計算式を教えて下さい。 (出来れば逆のパターンでX値が固定でYの値を調べる計算式も欲しいです。) 宜しくお願いします。

関連するQ&A