• ベストアンサー

お馬鹿な僕に愛の手を!

数学が大の苦手な僕が、ある事情で下の課題を突きつけられてしまいました。 X=(t1-T2)-(t2-T1)/ln((t1-T2)/(t2-T1)) という式がありまして、Xが既知の数字なんですが ここから、t2を求める式をエクセルで作らなければなりません。 高校の基礎解析と微分積分の教科書を引っ張り出して いろいろ考えてみましたが、結局lnがネックでどうしたらt2=の式に変換できるかわかりません。 逆に言えば、lnの式さえ何とかしてしまえば作れそうなんですが・・・ ぜひヒントだけでも結構ですので、教えてください! よろしくお願いいたします!!

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

  • ベストアンサー
  • keikan
  • ベストアンサー率42% (75/176)
回答No.2

>でも本当は式を立てて、多くのデータを一括処理は ということなので、 前回の要にデータを各セルにセットし、複数のデータを下方向に配置してください。(Fに目標値をいれてください。=x) 下記マクロを実行すれば一括処理できます。 2行目から100行目までのデーターについて実行します。(ループは適当に合わせてください。) Sub ゴールシーク() ' ' ゴールシーク Macro ' dim i as integer dim j as integer for i=2 to 100 Range("A"&i).GoalSeek Goal:=Range("F" & i), ChangingCell:=Range("C"&i) next i End Sub

naiz
質問者

お礼

これがうわさに聞くマクロですね。 早速やってみます。ありがとうございました。

その他の回答 (1)

  • keikan
  • ベストアンサー率42% (75/176)
回答No.1

Excelで値だけを求めるならば、ゴールシークを使うと便利です。 これを使うと、Xが既知の値になるようにt2を変化させて、該当するt2を求めてくれます。 セルA2    X =(B2-E2)-(C2-D2)/LN((B2-E2)/(C2-D2)) セルB2    t1 既知の値 セルC2 t2 変化させるセル セルD2 T1 既知の値 セルE2 T2 既知の値 とおいて、ゴールシークを実行してみてください。 ちなみにt1=1,T1=T2=0でXが100になるようにゴールシークを事項したところ、t2は1.010256858 となりました。 ただし、解が複数ある場合はソルバーを用いて制約条件を設定する必要があると思います。(この場合t2がとりうる範囲を指定してやります。)

naiz
質問者

お礼

御礼が遅れてすみません。 ご回答いただきまして、ありがとうございます。 早速試してみました。以前はトライアル&エラーで値を入れていましたが、これは早いですね。 でも本当は式を立てて、多くのデータを一括処理は したいんですよ。 上司に計算方法を聞いてみたら、散々やってみたが 計算式を立てるのは無理だよ、とのこと・・・ 式を立てるのはむりなのかなあ?

関連するQ&A