- ベストアンサー
プログラムに詳しい方よろしくお願いします!
プログラムに詳しい方よろしくお願いします。 Excel VBA等で次のようなことをやっていただきたいのですが、 無知なためにどうにもなりません。 だれかプログラムを組んでもらえませんか? Ax+By=P・・・(1)、-0.0001<(P/Q)<0.0001・・・(2)という式があって、 (A,Bはそれぞれ0,0.1,0.2,・・・,10で0.1刻みの101通り) まずx,y,Qに定数を打込んで、式(2)を満たすA,Bをすべて表示する。 x,y,Qに定数を打込んだとして、101×101通りあると思うのですが、 その中から式(2)を満たすA,Bだけを表示したいのです。 可能でしょうか?無知なためできるだけ詳しく教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Sub test1() Q = Range("b1") x = Range("b2") y = Range("b3") For A = 0 To 10 Step 0.1 For B = 0 To 10 Step 0.1 If (A * x + B * y) * 10000 > Q * -1 And (A * x + B * y) * 10000 < Q Then Range("D65535").End(xlUp).Offset(1) = A Range("E65535").End(xlUp).Offset(1) = B End If Next Next End Sub B1セルにQの値 B2セルにxの値 B3セルにyの値 を入れて実行すると D列にA、E列にBの値が表示されます
その他の回答 (3)
- n-jun
- ベストアンサー率33% (959/2873)
#2です。 ExcelVBAなら、 Sub try() Dim A, B, x, y, P, Q Dim st x = 0.001 y = 0.003 Q = 10 For A = 0.1 To 10 Step 0.1 For B = 0.1 To 10 Step 0.1 P = A * x + B * y If -0.0001 < (P / Q) And (P / Q) < 0.0001 Then st = st & "A:" & A & vbTab & "B:" & B & vbCrLf End If Next Next MsgBox st End Sub こんな感じかな? >定数固定 x,y,Qに定数を”入力できるように”ではなく、”事前に決めている”状態を指しました。 >x = 0.001 >y = 0.003 >Q = 10 が固定されている部分です。 >VBS VBScript関数リファレンス http://www.kanaya440.com/contents/script/index.html こんな感じでVBAとは違う物です。
お礼
本当にありがとうございました! 助かりました! また何かありましたら、よろしくお願いいたします。
- n-jun
- ベストアンサー率33% (959/2873)
定数固定のVBS。 Dim A,B,x,y,P,Q Dim st x = 0.001 y = 0.003 Q = 10 For A=0.1 To 10 Step 0.1 For B=0.1 To 10 Step 0.1 P = A * x + B * y If -0.0001 < (P/Q) And (P/Q) < 0.0001 Then st = st & "A:" & A & vbTab & "B:" & B & vbCrLf End If Next Next WSCript.Echo st とか?(定数はテキトーですが)
お礼
ご返答ありがとうございます。 自分自身本当無知なので"定数固定のVBS"すらわかりません。 さらに詳しく教えていただけると幸いです。
- web2525
- ベストアンサー率42% (1219/2850)
101*101=10201 1万回程度のループで済むなら総当たりで計算してもそれほど時間はかからないでしょう。
お礼
ご返答ありがとうございます。 素人にでもできるいい方法はありませんか? 出来る限り詳しく教えていただけるといいのですが。
お礼
ありがとうございます! これを機会によく勉強したいと思います。