スチュアートは、ワークシートに一連の読み取り値を持っています。最初の列には測定値に関連付けられた日付があり、2番目の列には実際の測定値があります。スチュアートは、測定値が負になった最初の日付を返す数式が必要です。つまり、数式は2番目の列で負の最初の値を探し、その値に関連付けられた日付を返す必要があります。

2番目の列には複数の負の値が存在する可能性がありますが、必要なのは最初の負の値に関連付けられた日付のみです。

この問題に取り組む方法はいくつかあります。すべての方法は、列Aの日付が昇順であり、列Bの読み取り値が識別可能な順序ではないことを前提としています。 (言い換えると、読み取り値は任意の日付で0の上下にバウンスする可能性があります。)

ワークシートのレイアウトをある程度制御できる場合は、値が負の場合を示すために使用される中間作業列を列Cに追加できます。次のような数式をC列の各読み取り値の右側に配置するだけです。

=IF(B1<0,A1,"")

この数式は、Bの値が0(負)未満の場合は列Aの日付を返し、それ以外の場合は何も返しません。次に行う必要があるのは、列Cで最小値を探すことだけです。

=MIN(C:C)

結果を日付としてフォーマットします。これは、読み取り値が最初に負になった日付を表します。

別のアプローチは、中間列の使用をやめ、配列数式を使用して日付を決定することです。データがA1:B42の範囲にあると仮定すると、次の式のいずれかを使用できます。

=MIN(IF(B1:B42<0,A1:A42,""))

=OFFSET($A$1,MATCH(TRUE,$B$1:$B$42<0,0)-1,,,)

=INDEX(A:A,MIN(IF(B1:B42<0,ROW(B1:B42))))

=INDEX(A1:A42,MATCH(TRUE,B1:B42<0,0))

=INDIRECT("A"&MIN(IF(B1:B42<0,ROW(B1:B42))),TRUE)

これらはすべて配列数式であるため、Shift + Ctrl + Enterを押して選択した数式を入力する必要があることに注意してください。結果を日付としてフォーマットすると、それがあなたが求める答えです。

必要に応じて、単純なマクロを使用して日付を決定することもできます。

Function GetFirstNegative(rngdata)

Dim c As Variant

For Each c In rngdata         If c < 0 Then             GetFirstNegative = c.Offset(0, -1)

Exit Function         Else             GetFirstNegative = "All Data is Positive"

End If     Next End Function

ワークシートでは、このユーザー定義関数を次のように使用します。

=GetFirstNegative(B1:B42)

注:

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

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

このヒント(12321)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。

Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります: