« さらなる?逆風 | Main | 電脳メガネ保守契約 »

May 26, 2007

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 | 電脳メガネ保守契約 »

パソコン・インターネット」カテゴリの記事

Comments

スパムと思って放置していたらたらまともなコメントだった?
いや日本語しか書いていない書いていない記事に英語のコメントは無いよね。
記事が読めるなら日本語でコメントされるはず。

Posted by: まぎ | January 17, 2010 08:55 PM

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference XLVBA)連続で条件を満たす数をカウント:

« さらなる?逆風 | Main | 電脳メガネ保守契約 »