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 2019.“ 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 2019 ist“ oder „dieser Wert der niedrigste seit November 2016“.
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 blickt rückwärts durch die Informationen in Spalte B und liefert sowohl ein „niedrigstes seit“ als auch ein „höchstes seit“ 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 (10183) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tippes für die ältere Menüoberfläche von Excel finden Sie hier: