- ベストアンサー
Excel2000マクロで2つの近似線の接点を求める方法
- Excel2000マクロを使用して、散布図上に表示された2つの近似線の接点の値を求める方法について知りたいです。
- データの範囲として、A1からA5とB1からB5が近似線1のデータ範囲であり、A8からA12とB8からB12が近似線2のデータ範囲です。
- 近似線1の傾きはSLOPE関数を使用して求めることができます。また、切片はINTERCEPT関数を使用して求めることができます。
- みんなの回答 (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の値を調べる計算式も欲しいです。 考え方さえわかってしまえば、あとは応用です。頑張って下さいね(^^)ノ
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
すみません、正直 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
お礼
KenKen_SP様回答ありがとう御座います。 接点の値がxが5.999位、Yが15.02とバッチリでした。 直線の連立方程式を使うのですね、良い勉強になりましたありがとう御座います。 (補足で又質問するかも知れませんがその時は宜しくお願いします。)
補足
KenKen_SP様宜しければ計算式を教えて下さい。 近似線1は、A1:A5、B1:B5で前回と同じ、近似線2の方が今回変わって Y値が固定で(今回は12)Xの値を調べる計算式を教えて下さい。 (出来れば逆のパターンでX値が固定でYの値を調べる計算式も欲しいです。) 宜しくお願いします。
お礼
KenKen_SP様回答ありがとう御座います。 私の弱い頭でもようやくX値は出すことが出来ました。 (でも、Y値の方はまだです。) 今回も、勉強になる回答ありがとう御座いました。