Bestimmen von „Höchste seit“ oder „Niedrigste seit“ (Microsoft Excel)
Alex analysiert routinemäßig die neuesten Daten der Bauindustrie und muss Artikel über die Daten schreiben. Häufig muss er einige neue Daten hervorheben, z. B. „Der industrielle Hochbau war der niedrigste seit August 2007.“ Alex fragte sich, ob es eine Möglichkeit gab, diese Art der Hervorhebung zu automatisieren. Wenn Spalte A den Monat und das Jahr enthält und Spalte B die Werte für diese Zeiträume enthält, möchte Alex eine Formel in Spalte C, die angibt, dass „dieser Wert der höchste seit April 2007 ist“ oder „dieser Wert der niedrigste seit November 2004“.
Angenommen, der in Spalte A aufgeführte Monat und das Jahr sind tatsächlich ein Excel-Datumswert (und kein Text), können Sie einfach eine Formel erstellen, um die gewünschten Informationen zurückzugeben. Wenn Sie Zeile 1 mit Überschriften für Ihre Spalten belegt haben, geben Sie in Zelle C2 Folgendes ein:
=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"),"")))
Denken Sie daran, dass dies eine einzelne Formel ist und alle in einer Zeile eingegeben werden sollten. Sie können die Formel in Spalte C so viele Zeilen wie nötig kopieren und sie sollte die gewünschten Informationen enthalten. In Spalte C wird nur dann eine Notation vorgenommen, wenn der Wert in Spalte B größer als das Maximum oder kleiner als das Minimum aller vorstehenden Werte in Spalte B ist.
Wenn Ihr Arbeitsblatt einige Daten enthält, können Sie feststellen, dass die Formel zu langen Neuberechnungszeiten führt. Wenn dies der Fall ist, sollten Sie ein Makro verwenden, das die gewünschte Analyse durchführt und die entsprechenden Informationen bereitstellt. Das folgende Makro bietet einen Rückblick auf die Informationen in Spalte B und liefert sowohl ein „niedrigstes seit“ als auch ein „höchstes seit“ Ergebnis in den Spalten C und 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
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3138) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: