「以来最高」または「以来最低」の決定(Microsoft Excel)
Alexは定期的に最新の建築業界データを分析しており、データに関する記事を書く必要があります。彼は頻繁に、「産業用建物の建設は2007年8月以来最低だった」などの新しいデータを強調する必要があります。 Alexは、このタイプの強調表示を自動化する方法があるかどうか疑問に思いました。列Aに月と年が含まれ、列Bにそれらの期間の値が含まれる場合、Alexは、列Cに、「この値は2007年4月以降で最高」または「この値は2004年11月以降で最低」を示す数式を求めています。
列Aにリストされている月と年が実際にはExcelの日付値(テキストではない)であると仮定すると、目的の情報を返す数式を簡単に作成できます。行1が列の見出しで占められている場合は、セルC2に次のように入力します。
=IF(ROW(B2)=2,"",IF(B2>MAX($B$1:B1), "this value is the highest since " & TEXT(INDEX($A$1:A1,MATCH(MAX( $B$1:B1),$B$1:B1,0)), "mmmm yyyy"), IF(B2<MIN($B$1:B1), "this value is the lowest since " & TEXT(INDEX($A$1:A1, MATCH(MIN($B$1:B1),$B$1:B1,0)), "mmmm yyyy"),"")))
これは単一の数式であり、すべて1行で入力する必要があることに注意してください。数式を列Cの必要な数の行にコピーすると、必要な情報が提供されます。列Bの値が、列Bの前述のすべての値の最大値よりも大きいか、最小値よりも小さい場合にのみ、列Cに表記されます。
ワークシートにかなりの量のデータがある場合、数式の再計算時間が長くなることに気付くでしょう。この場合、目的の分析を実行して適切な情報を提供するマクロの使用を検討することをお勧めします。次のマクロは、列Bの情報をさかのぼって表示し、列CとDに「最低以降」と「最高以来」の両方の結果を提供します。
Sub FindHiLow() Dim orig_cell As Range Dim orig_val As Integer Dim orig_row As Integer Dim rownum As Integer Dim newcell As Range Dim new_val As Integer Dim lowrow As Integer Dim hirow As Integer Set orig_cell = ActiveCell orig_row = ActiveCell.Row orig_val = orig_cell.Value ' find lowest lowrow = 0 For rownum = orig_cell.Row - 1 To 1 Step -1 Set newcell = Cells(rownum, 2) new_val = newcell.Value If orig_val >= new_val Then lowrow = rownum Exit For End If Next If lowrow = 0 Then lowrow = 1 Cells(orig_row, 3).Value = "Lowest since " & Cells(lowrow, 1) ' find highest hirow = 0 For rownum = orig_cell.Row - 1 To 1 Step -1 Set newcell = Cells(rownum, 2) new_val = newcell.Value If orig_val <= new_val Then hirow = rownum Exit For End If Next If hirow = 0 Then hirow = 1 Cells(orig_row, 4).Value = "Highest since " & Cells(hirow, 1) End Sub
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3138)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。