Excel VBA質問箱 IV

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

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


12723 / 13645 ツリー ←次へ | 前へ→

【8962】比例計算 Takao 03/11/12(水) 9:09 質問
【8964】Re:比例計算 INA 03/11/12(水) 9:53 回答
【8967】Re:比例計算 Takao 03/11/12(水) 11:23 回答
【8983】Re:比例計算 Takao 03/11/12(水) 18:09 質問
【8984】Re:比例計算 ichinose 03/11/12(水) 18:52 回答
【8985】Re:比例計算 Takao 03/11/12(水) 19:42 質問
【8986】Re:比例計算 ウッシ 03/11/12(水) 20:11 回答
【8987】Re:比例計算 Takao 03/11/12(水) 20:48 回答
【8988】Re:比例計算 Takao 03/11/12(水) 20:57 回答
【8990】Re:比例計算 ウッシ 03/11/12(水) 21:34 回答
【8989】Re:比例計算 ichinose 03/11/12(水) 21:27 発言
【8991】Re:比例計算 Takao 03/11/12(水) 21:37 回答
【8992】Re:比例計算 kein 03/11/13(木) 1:01 回答
【8994】Re:比例計算 Takao 03/11/13(木) 9:42 回答
【8997】Re:比例計算 Takao 03/11/13(木) 11:38 お礼

【8962】比例計算
質問  Takao  - 03/11/12(水) 9:09 -

引用なし
パスワード
   皆さんこんにちわ。
一つ質問したいのですが、エクセルで比例計算は出来ますか?
例えば、「1時間に3km走れる車がいます。では3時間では?」
と言う問題があり普通に計算すると、「1:3=3:X」で
「1X=9」で答えは9kmとなりますよね。
これをエクセルでやりたいのです。
皆様ご教授下さい。よろしくお願いします。

【8964】Re:比例計算
回答  INA  - 03/11/12(水) 9:53 -

引用なし
パスワード
   VBAで行いたいのでしょうか?
VBAなら変数が使えるので、容易ですが・・・

それとも数式(ユーザー定義関数?)で行いたいのでしょうか?

【8967】Re:比例計算
回答  Takao  - 03/11/12(水) 11:23 -

引用なし
パスワード
   ▼INA さん>ありがとう御座います。

実際はA:B=C:XをX=B/A*Cでセル内に入れれば良いのでしょうけど、これを切っ掛けにある計算をやりたいのです。
それは、

キャリブレーションなのですが、
−−−−−−−−−−−−−−−−−−−−−−−−−
0 |100 |200  |300  |400  |500  |600 | 単位KN
−−−−−−−−−−−−−−−−−−−−−−−−−
0 | 11 |22.1 |33.3 |44.3 |55.4 |66.6 | 単位Mpa
−−−−−−−−−−−−−−−−−−−−−−−−−
の表がありまして、
50.0KNの時は 5.5Mpa
99.0KNの時は10.9Mpa
199.0KNの時は22.0Mpa
298.0KNの時は33.1Mpa
398.0KNの時は44.1Mpa
496.9KNの時は55.1Mpa

と言う風にMpaの答えを出したいのです。
KNの方は任意で決めて、キャリブレーション表を基準にMpaを出すという事です。
あくまでも比例計算で出しますので、逆にどの様にすれば良いかをご教授願えたらと思います。VBAでもユーザー関数でも便利が良い方が良いです。

よろしくお願い申し上げます。

【8983】Re:比例計算
質問  Takao  - 03/11/12(水) 18:09 -

引用なし
パスワード
   補足ですが、キャリブレーション表は常に変わります。
常に変わるという意味は、毎日ではなくて測定時と言う事です。
それとキャリブレーションは、あくまでもグラフなのです。縦(Y)が0から600KN 横(X)0から66.6Mpaの傾きのグラフです。
その傾きの中で50KNは○○Mpaなのかが知りたいのです。
そして、キャリブレーションを入力後(仮にA1:G2)
A4:B9(A4列は任意のKNの数、B列はMpaの答えの列)にダッダンっと出て欲しいのです。
ちょっと言いたい事がなかなか伝わらないと思いますが・・・分かって下さい。
言っている私も訳が分からなくなってきましたよ・・・・|Д`)
よろしくお願い申し上げます。

【8984】Re:比例計算
回答  ichinose  - 03/11/12(水) 18:52 -

引用なし
パスワード
   ▼Takao さん:
こんばんは。

>補足ですが、キャリブレーション表は常に変わります。
>常に変わるという意味は、毎日ではなくて測定時と言う事です。
>それとキャリブレーションは、あくまでもグラフなのです。縦(Y)が0から600KN 横(X)0から66.6Mpaの傾きのグラフです。
>その傾きの中で50KNは○○Mpaなのかが知りたいのです。
>そして、キャリブレーションを入力後(仮にA1:G2)
>A4:B9(A4列は任意のKNの数、B列はMpaの答えの列)にダッダンっと出て欲しいのです。
>ちょっと言いたい事がなかなか伝わらないと思いますが・・・分かって下さい。
>言っている私も訳が分からなくなってきましたよ・・・・|Д`)
>よろしくお願い申し上げます。

ワークシート関数にFORECASTがあります。
例えば、ご提示された例からだとセルB4だと、

「=FORECAST(a4,$a$2:$g$2,$a$1:$g$1)」

後は、小数点を丸めてください。

【8985】Re:比例計算
質問  Takao  - 03/11/12(水) 19:42 -

引用なし
パスワード
   こんばんわ。解答ありがとう御座います。

>ワークシート関数にFORECASTがあります。
>例えば、ご提示された例からだとセルB4だと、
>
>「=FORECAST(a4,$a$2:$g$2,$a$1:$g$1)」
>
>後は、小数点を丸めてください。

↑でやってみましたが、取りあえず似た様な数字にはなりましたが、多少端数が
合いません。まぁホントに多少ですが。。。
実際、予測の数とはどの様な事(意味)でしょうか。比例とは違うのでしょうか?

よろしくお願いします。

【8986】Re:比例計算
回答  ウッシ  - 03/11/12(水) 20:11 -

引用なし
パスワード
   こんばんは、Takao さん

FORECAST(存在すら知らなかった関数です)とは、結果が異なりますけど・・・
平均から算出がB列に、差から算出がC列に出ます。

>199KNの場合、表の100〜200KNの間になるわけですが、2つの平均もしくは差で出す
という意味を取り違えてるかも

Sub test_0()
  Dim i As Long
  Dim strMpa As String, dblMpa As Double
  Dim mRng As Range, cRng As Range, cR As Range
  Dim aveD As Double, depD As Double
  
  Set mRng = Range("A1").CurrentRegion.Rows(1)
  Set cRng = Range("A4", Range("A65536").End(xlUp))
  For Each cR In cRng
    i = Application.Match(cR.Value, mRng, 1)
    If Cells(1, i) = 0 Then
      cR(1, 2) = Cells(2, i + 1) / Cells(1, i + 1) * cR.Value
    Else
      cR(1, 2) = _
        ((Cells(2, i) / Cells(1, i)) + (Cells(2, i + 1) _
          / Cells(1, i + 1))) / 2 * cR.Value
    End If
      cR(1, 3) = (Cells(2, i + 1) - Cells(2, i)) _
          / (Cells(1, i + 1) - Cells(1, i)) * cR.Value
  Next
  Set mRng = Nothing
  Set cRng = Nothing
End Sub

【8987】Re:比例計算
回答  Takao  - 03/11/12(水) 20:48 -

引用なし
パスワード
   こんばんわ。何度もすいません。>ウッシ さん

そうですね。差・平均と言うよりは、100〜200KNの傾きの中と言う表現が正しいのかもしれませんね。

下のVBAコードはどの様に使えば良いのでしょうか?
取りあえずVBAを開いてコピーしました。それで実行ボタンを押すと、
C列に答えが出るようですが、これはマクロボタンを使用して使うのでしょうか?

ホント物わかりが悪くて申し訳ありません。

よろしくお願い申し上げます。

【8988】Re:比例計算
回答  Takao  - 03/11/12(水) 20:57 -

引用なし
パスワード
   現在、キャリブレーション表が「C21:I22」で50KNが「D28」の時に
こんな数式で書いています。
下は足らない分(関数が書けない分)を補足して、両方の値で大きい方を採用してます。

この書式の答えと、ウッシさんの答えがまた微妙に違うのですが、どうしてでしょう。
やっぱり多少の誤差はしょうがないのでしょうか!?
あくまでも基本は、傾きです。

=IF(D28<$C$21,$C$22/$C$21*D28,IF(D28<$D$21,(($D$22-$C$22)/($D$21-$C$21))*
(D28-$C$21)+$C$22,IF(D28<$E$21,(($E$22-$D$22)/($E$21-$D$21))*(D28-$D$21)
+$D$22,IF(D28<$F$21,(($F$22-$E$22)/($F$21-$E$21))*(D28-$E$21)+$E$22,IF
(D28<$G$21,(($G$22-$F$22)/($G$21-$F$21))*(D28-$F$21)+$F$22,IF(D28<$H$21,
(($H$22-$G$22)/($H$21-$G$21))*(D28-$G$21)+$G$22,IF(D28<$I$21,(($I$22-
$H$22)/($I$21-$H$21))*(D28-$H$21)+$H$22,IF(D28<$J$21,(($J$22-$I$22)/
($J$21-$I$21))*(D28-$I$21)+$I$22,"ERR"))))))))


=IF(D28<$J$21,"ERR",IF(D28<$K$21,(($K$22-$J$22)/($K$21-$J$21))*(D28-$J$21)+$J$22,IF(D28<$L$21,(($L$22-$K$22)/($L$21-$K$21))*(D28-$K$21)
+$K$22,"ERR")))

【8989】Re:比例計算
発言  ichinose  - 03/11/12(水) 21:27 -

引用なし
パスワード
   ▼Takao さん:
こんばんは。
>>ワークシート関数にFORECASTがあります。
>>例えば、ご提示された例からだとセルB4だと、
>>
>>「=FORECAST(a4,$a$2:$g$2,$a$1:$g$1)」
>>
>>後は、小数点を丸めてください。
>
>↑でやってみましたが、取りあえず似た様な数字にはなりましたが、多少端数が
>合いません。まぁホントに多少ですが。。。
>実際、予測の数とはどの様な事(意味)でしょうか。比例とは違うのでしょうか?
>
>よろしくお願いします。
FORECAST関数は、最小二乗法を用いた関数です。
y=ax+bが直線の関数なら、

与えられたX,Yのデータ(例では、a1:g2)から最も近い傾きと切片を求め、

そのa,bを使用して、計算されます(何故かは、遠い昔にかじっただけなので
覚えていません、いえ、その当時も覚えなかったような)。

この方法だとTakao さんの意図する結果は出てこないかもしれません。

【8990】Re:比例計算
回答  ウッシ  - 03/11/12(水) 21:34 -

引用なし
パスワード
   こんばんは、Takao さん

使い方はTakao さんが決める事です。

フォームからボタンを作るならマクロ登録するだけです。

傾きから求める方法に変えたつもりです、試して下さい。

KNの元範囲と、調べるKNの範囲をマウスで選択するようにしました。

Sub test_1()
  Dim i As Long
  Dim mRng As Range, cRng As Range, cR As Range
  
  On Error Resume Next
  Set mRng = _
    Application.InputBox("KNの元範囲を選択して下さい。例A1〜G1)", , , , , , , 8)
  If mRng Is Nothing Then Exit Sub
  Set cRng = _
    Application.InputBox("調べるKNの範囲を選択して下さい。例A4〜A9)", , , , , , , 8)
  If cRng Is Nothing Then Exit Sub
  On Error GoTo 0
  
  With mRng
    For Each cR In cRng
      i = Application.Match(cR.Value, mRng, 1)
      cR(1, 2) = (cR.Value - .Cells(1, i)) * _
            (.Cells(2, i + 1) - .Cells(2, i)) / _
            (.Cells(1, i + 1) - .Cells(1, i)) + _
             .Cells(2, i)
    Next
  End With
  Set mRng = Nothing
  Set cRng = Nothing
End Sub

【8991】Re:比例計算
回答  Takao  - 03/11/12(水) 21:37 -

引用なし
パスワード
   こんばんわ、ichinose さん

>FORECAST関数は、最小二乗法を用いた関数です。
>y=ax+bが直線の関数なら、
>
>与えられたX,Yのデータ(例では、a1:g2)から最も近い傾きと切片を求め、
>
>そのa,bを使用して、計算されます(何故かは、遠い昔にかじっただけなので
>覚えていません、いえ、その当時も覚えなかったような)。
>
>この方法だとTakao さんの意図する結果は出てこないかもしれません。

相違線って事ですかね?
では逆を言えば、A1:B1では正確な数字が出るのでしょうかね!?
それを比較していき、大きい数字が答え!??
難しいですね。
私もいろいろ試してみます。

ありがとう御座います。

【8992】Re:比例計算
回答  kein  - 03/11/13(木) 1:01 -

引用なし
パスワード
   B1:G2 にその表があるとして、A2 に以下の数式を入れ A1 に数値を入れてみて下さい。
やはりご希望の値とは僅かな違いが出ると思いますが、直線回帰にしたいなら
TREND関数になります。ROUND系関数で丸める部分の工夫次第かな・・?

=ROUND(TREND(B2:G2,B1:G1,A1),1)

【8994】Re:比例計算
回答  Takao  - 03/11/13(木) 9:42 -

引用なし
パスワード
   おはよう御座います。
直線回帰と言うのはなかなか興味深いですね。
確かにかなり近い数字になってきました。
でもこの回帰直線は各0〜100・100〜200・200〜300
と言う風にその区間での傾きのXを予測しているものなのでしょうか?
私は数学がホント弱いので難しい問題です。
よろしくお願い申し上げます。

【8997】Re:比例計算
お礼  Takao  - 03/11/13(木) 11:38 -

引用なし
パスワード
   皆さんこんにちは。

大体理解できました。VBAの方でも作ってみました。

いろいろなご意見ありがとう御座いました。大変勉強になり、今後また何かありましたら、
よろしくお願い申し上げます。

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