Loriには、隣接するセルに一連の数値があり、正または負のいずれかになります。彼女は、範囲内の負の数の最大のシーケンスを決定する方法を望んでいます。したがって、このシーケンスの行に7つの負の数がある場合、彼女は値7を返す数式が必要です。

私たちは高くも低くも見えましたが、求められていることを実行する単一の式を見つけることができません。ただし、中間カラムを使用して行うことはできます。たとえば、列A(A1で始まる)に数値がある場合、セルB1に次の数式を入力できます。

=IF(A1<0,1,0)

次に、セルB2に次のように入力します。

=IF(A2<0,B1+1,0)

これを、列Aに値がある列Bの他のすべてのセルにコピーします。次に、別のセル(おそらくセルC1)に、次の数式を入力できます。

=MAX(B:B)

この値は、列Aの連続する負の値の最大数を表します。

答えを得るために中間列を作成したくない場合は、値を返すユーザー定義関数を作成できます。

Function MaxNegSequence(rng As Range)

' search for the largest sequence ' of negative numbers in the range

Dim c As Range     Dim lCounter As Long     Dim lMaxCount As Long       Application.Volatile     lCounter = 0     lMaxCount = 0     On Error Resume Next     For Each c In rng.Cells         If c.Value < 0 Then             lCounter = lCounter + 1             If lCounter > lMaxCount Then                 lMaxCount = lCounter             End If         Else             lCounter = 0         End If     Next c       MaxNegSequence = lMaxCount End Function

この関数を使用するには、ワークシートに次のような数式を配置するだけです。

= MaxNegSequence(A1:A512)

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3533)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。