Excel VBA質問箱 IV

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

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


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

【67732】複雑な関数をVBAで回すコーディングを教えてください。 VBA開始1か月 11/1/5(水) 21:31 質問[未読]
【67736】Re:複雑な関数をVBAで回すコーディングを教... neptune 11/1/6(木) 0:15 発言[未読]
【67757】Re:複雑な関数をVBAで回すコーディングを教... VBA開始1か月 11/1/6(木) 18:15 発言[未読]
【67758】Re:複雑な関数をVBAで回すコーディングを教... VBA開始1か月 11/1/6(木) 18:16 質問[未読]
【67761】Re:複雑な関数をVBAで回すコーディングを教... neptune 11/1/6(木) 22:32 発言[未読]
【67762】Re:複雑な関数をVBAで回すコーディングを教... VBA開始1か月 11/1/6(木) 22:47 発言[未読]
【67763】Re:複雑な関数をVBAで回すコーディングを教... neptune 11/1/7(金) 0:18 発言[未読]
【67788】Re:複雑な関数をVBAで回すコーディングを教... はーばー 11/1/8(土) 15:05 発言[未読]
【67794】Re:複雑な関数をVBAで回すコーディングを教... neptune 11/1/8(土) 22:40 発言[未読]

【67732】複雑な関数をVBAで回すコーディングを教...
質問  VBA開始1か月  - 11/1/5(水) 21:31 -

引用なし
パスワード
   VBA全くの初心者です。
ある案件の解析をするために以下の関数を計算したのですが、やり方、コーディングがうまくわからず、分析まであまり時間もないため、質問させていただきました。

使用するデータは、CSV形式のファイルで、3列n行あります(下の値は適当です。値は2行目から)

x y t
7.4 8.3 6.2
1.0 2.7 3.9
5.8 4.7 3.6

・ 





マクロにて入力する変数は、n, hs, htの値です。

これらの値を入力して以下の関数 f(x,y,t)=c値を求め、
(x, y, t, c)の列で別のCSVファイルに保存する

関数は、

f(x, y, t) = [1/{n*(hs^2)*ht}] * ΣKs[(x-xi)/hs, (y-yi)/hs]Kt[(t-ti)/ht]

(Σの下にはiがきます)

Ks(u, v)={(2/π)*(1-(u^2+v^2)) (u^2+v^2)<1}
    ={0 otherwise           }

Kt(w)={(3/4)*(1-w^2)  w^2<1}
   ={0 otherwise     }

複雑な関数でテキストで書いており申し訳ありません。

何卒よろしくお願いします。

【67736】Re:複雑な関数をVBAで回すコーディングを...
発言  neptune  - 11/1/6(木) 0:15 -

引用なし
パスワード
   ▼VBA開始1か月 さん:
>VBA全くの初心者です。
それは良いのですが、どこまで何がわかって何がわからないのかが
書かれていませんよ。

その辺りは書いた方が良いアドバイスを受けられますよ。

私には
>これらの値を入力して以下の関数 f(x,y,t)=c値を求め、
ここまではわかるけど
>(x, y, t, c)の列で別のCSVファイルに保存する
の行以下がよくわからないので何のアドバイスもしてあげられませんけど。

【67757】Re:複雑な関数をVBAで回すコーディングを...
発言  VBA開始1か月  - 11/1/6(木) 18:15 -

引用なし
パスワード
   ▼neptune さん:
ファイルを開くなどは、わかるのですが、
コードを一貫してつなげて書くことができない状態です。
何がしたいのかを、次のレスに書き込みました。

【67758】Re:複雑な関数をVBAで回すコーディングを...
質問  VBA開始1か月  - 11/1/6(木) 18:16 -

引用なし
パスワード
   使用するデータは、CSV形式のファイルで、3列n行あります(下の値は適当です。値は2行目から)

x y t
7.4 8.3 6.2
1.0 2.7 3.9
5.8 4.7 3.6

・ 





マクロにて入力する変数は、n, hs, htの値です。

これらの値を入力して以下の関数 f(x,y,t)=c値を求め、
(x, y, t, c)の列で別のCSVファイルに保存する


関数f(x,y,t)について関数が難しいので、何がしたいのかをかきました。


例えば、(x,y,t)は、(x1,y1,t1)から(x10,y10,t10)まであるとします。


(x1,y1,t1)の時を例に説明します。

 [step1]
  ΣKs[(x-xi)/hs, (y-yi)/hs]*Kt[(t-ti)/ht](Σの下にはi)
  i=1の時、


 [step2]u,wを変数とします

  (x1-xi)/hs=u1_1,
  (y-yi)/hs=v1_1,
  とする

  (t-ti)/ht=w1_1
  とする


 [step3]L,M,N,P,Qを変数とします

  {(u1_1)^2+(v1_1)^2}=L1
  (w1_!)^2=M1
  とする

  もしも、(L1)<1 ならば、
  (2/π)*{1-(L1)}=N1とする
  そうでなければ、N1=0とする

  もしも、(M1)<1 ならば、
  (3/4)*{1-(M1)}=P1とする
  そうでなければ、P1=0とする

  (N1)*(P1)=Q1 とする

 [step4]

  次に、[step1]にもどりi=2の時で[step2]→[step3]と処理する。
  その結果、Q2が求まる。

  これを、i=10の時まで繰り返し、
  Q1〜Q10までが求まる。

 [step5]
  
  Q1〜Q10までを全部足す。
  足した値に、1/{n*(hs^2)*ht} をかける。

  出た値が、(x1,y1,t1)=c1である。


以上の、[step1]から[step5]まで繰り返し、(x10,y10,t10)=C10までもとめます。


C1からC10までを、

別のファイルでx,y,tの隣の列に、書き込んでいき、保存。

という流れです。

何卒よろしくお願いします。

【67761】Re:複雑な関数をVBAで回すコーディングを...
発言  neptune  - 11/1/6(木) 22:32 -

引用なし
パスワード
   ▼VBA開始1か月 さん:
まだ全部読んでませんが、なんとか私にも意味が通じそうです。


>ΣKs[(x-xi)/hs, (y-yi)/hs]*Kt[(t-ti)/ht](Σの下にはi)
の説明にΣの上にはn (例として今回は10)
ってな感じのが抜けてたんですね。
ってよく読めば分かったんでしょうが。

で、本題ですが、
基本的に総和の計算にはn=10の場合

dim i as long
dim ans as double ・・・・適当です

for i=0 to 9
  ans=計算式 + ans
next i

msgbox "総和 : " & cstr(ans)

ってな感じの計算方法を使用します。
ちょっとこれで考えてみて下さいませ。

これは判ってたんですかね?

私自身はまだ全部読んで理解してないので取り敢えずこんな所で。
計算を理解するのに時間かかるかもしれませんが先ず理解にチャレンジしてみます。
私にはコード化よりこちらの方がややこしそうです。

【67762】Re:複雑な関数をVBAで回すコーディングを...
発言  VBA開始1か月  - 11/1/6(木) 22:47 -

引用なし
パスワード
   ▼neptune さん:
お返事ありがとうございます。

>ΣKs[(x-xi)/hs, (y-yi)/hs]*Kt[(t-ti)/ht](Σの下にはi)
の説明にΣの上にはn (例として今回は10)


そのとおりです。申し訳ありません。

Σの下にはiとしか書かれていない場合は、(x,y,t)が1〜nまであった場合、
Σを1〜nまで繰り返すということになります。

よろしくお願いします。

【67763】Re:複雑な関数をVBAで回すコーディングを...
発言  neptune  - 11/1/7(金) 0:18 -

引用なし
パスワード
   ▼VBA開始1か月 さん:
取り敢えず気付いた不明点

1.マクロにて入力する変数 n,hs,htはどこでどのように決定するのか、又は
 単に定義するのか?
2.xとはなにかyも同様。どのように与えるのかそれとも定義するのか?

これらって常識ですかね?もう年なんで忘れてます。

ざっと見た感じここまで分析していれば、後はVBに書き換えるだけですよ。
ご自分で書ける所まで書きませんか?それが一番早い気がします。

ちなみに私は普段逆質問してまでマルッとコードの提供はお断りしてますので
あらかじめお断りしておきます。

ご自分で書ける所まで書いたものについてはアドバイスできると思います。
そうしなければ後でご自分が困るはずです。

【67788】Re:複雑な関数をVBAで回すコーディングを...
発言  はーばー  - 11/1/8(土) 15:05 -

引用なし
パスワード
   マルチポストはいけませんよ。
h t t p ://okwave.jp/qa/q6430708.html

【67794】Re:複雑な関数をVBAで回すコーディングを...
発言  neptune  - 11/1/8(土) 22:40 -

引用なし
パスワード
   ▼はーばー さん:
>マルチポストはいけませんよ。
>h t t p ://okwave.jp/qa/q6430708.html
リンク先見てしまいました。マクロの記録しかできないなら最初から
そう書けば良いのに。
・・・その場合は私は書き込まなかったからどなたかが書いてくれる
可能性もあったのに。他の人がレス付けてたら割り込みにくいですからね。

本当に1か月勉強しているのかと思ってresを付けたのが間違いだった。。。

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