XLVBA)連続で条件を満たす数をカウント
教えて!gooの質問
[i行の値よりi+1行の値が大きく、i+1行の値よりi+2行目の値が大きい件数]をカウントする方法の解法について。
投稿された回答はSubプロシージャを呼んでセルの値を変更しているが、質問の例の場合、ユーザー定義関数にて処理をすべきと思った。
以下は自作のコード。
++++++++++++++++++++++++++++++++++++++++
Option Explicit
Dim i As Long, j As Long
Function DetectTrend(Trgtrng As Range, NoS As Long) As Integer
'数列の要素が連続で条件を満たす数をカウントする
'セルの数式は =detecttrend(A1:A27,2) のように入力する
'Trgtrng: 数列が入力されているセル範囲(連続する1列のみ指定可能)
'NoS: NoS個先まで確認する
' NoS=2の時、{N(i) # N(i+1)} と {N(i+1) # N(i+2)} が成り立つ必要がある(ここで#は満たす必要がある条件を表す演算子)。
DetectTrend = 1
For i = 1 To Trgtrng.Rows.count - NoS
If DtctInc(Trgtrng, NoS, i) Then
DetectTrend = DetectTrend + 1
End If
Next i
End Function
Function DtctInc(Trgtrng As Range, NoS As Long, CurN As Long) As Boolean
'{N(i) < N(i+1)}がNoS回続くかどうかを判定
For j = 1 To NoS
If Trgtrng(CurN + j - 1, 1) < Trgtrng(CurN + j, 1) Then
DtctInc = True
Else
DtctInc = False
i = i + j - 1
Exit Function
End If
Next j
End Function
« さらなる?逆風 | Main | 電脳メガネ保守契約 »
「パソコン・インターネット」カテゴリの記事
- ハガレンEDのねこ(2009.04.30)
- RMT行為は著作権侵害に当たらない(2007.11.18)
- XLVBA)連続で条件を満たす数をカウント(2007.05.26)
- マスコミとそれに踊らされる人が憎くて憎くてしょうがない(2007.03.22)
- カオスパワー(2007.02.03)
The comments to this entry are closed.
Comments
スパムと思って放置していたらたらまともなコメントだった?
いや日本語しか書いていない書いていない記事に英語のコメントは無いよね。
記事が読めるなら日本語でコメントされるはず。
Posted by: まぎ | January 17, 2010 08:55 PM