Excel VBA質問箱 IV

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

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


26681 / 76732 ←次へ | 前へ→

【55381】Re:ユーザー定義関数について
回答  ひげくま  - 08/5/1(木) 16:31 -

引用なし
パスワード
   > Function 日数(範囲,誤差)'まずここの範囲の書き方がわかりません。

 これでも間違いではありません。とりあえず大丈夫です。

> Range("A1") "=count(範囲)"
> m = Range("A1")

例では、データ範囲は A1:P1 なんですよね?
A1に範囲のデータ数を書き込んじゃうと、データが上書きされますよ。

そもそも、範囲のデータ数を、なぜ何かのセルに書き込もうとしているのでしょうか?
このあとで Range("A1") を「範囲のデータ数」として参照しているわけでもないですし。
直接、変数に代入すれば良いですよ。

m に限らず、後出の s も、変数は Dim で宣言するようにしましょう。

範囲のデータ数、というか、範囲のセル数は、範囲.Count で求められます。

m = 範囲.Count

> For s = 1 to m
> 'ここの標準偏差関数はSTDEV(range(cells(,),cells(,)))と言う書き方ではできないですが、どのような書き方に
> ’なるのでしょうか?

いろいろ書き方はありますが、今回の場合は、あるセルを基準に10個、ということなので、
Cells(1, s).Resize(, 10)
という書き方が良いと思います。
ただ、これだと、どんな範囲の場合でも、A1が基準になってしまうので、
範囲.Cells(1, s).Resize(, 10)
と書きます。

STDEVはワークシート関数なので、そのままVBAで使うことはできません。
WorksheetFunction.StDev(範囲.Cells(1, s).Resize(, 10))
という書き方になります。

> If 誤差 =< (STDEV(Range(cells(1,s),cells(1,s + 9)/STDEV(cells(1,s + 1),cells(1,s + 10))/100 Then

まず、=< という演算子はありません。書くとしたら、<= です。

この比較式だと、誤差 <= 計算式 となり、誤差外になります。
誤差内にしたいのであれば、誤差 >= 計算式 ですね。

100で割ってるのはなぜですか?
百分率値にしたいのであれば、計算式に100を掛けましょう。

標準偏差の計算式は、上記を参考にしてください。

> 日数 = s         'ここで誤差内で合格したデータの処理回数の合計を数えています。
>     If (m-s) = 10 Then 'この計算では最低11のデータがないと成り立たないので処理を終了させる。
>     exit For
>     end If
> Else
> exit For         'ここで誤差外が出たら、処理を終了
> end If
> Next s
> end Function

0 hits

【55365】ユーザー定義関数について YUMI 08/4/30(水) 23:32 質問
【55369】Re:ユーザー定義関数について ひげくま 08/5/1(木) 9:12 発言
【55370】Re:ユーザー定義関数について neptune 08/5/1(木) 9:54 発言
【55379】Re:ユーザー定義関数について YUMI 08/5/1(木) 15:11 質問
【55380】Re:ユーザー定義関数について Jaka 08/5/1(木) 16:30 発言
【55382】Re:ユーザー定義関数について Jaka 08/5/1(木) 16:46 発言
【55385】Re:ユーザー定義関数について YUMI 08/5/1(木) 19:04 お礼
【55381】Re:ユーザー定義関数について ひげくま 08/5/1(木) 16:31 回答
【55384】Re:ユーザー定義関数について YUMI 08/5/1(木) 18:59 お礼

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