
Ich möchte den höchsten Wert (positiv oder negativ) aus einer bestimmten Anzahl von Zellen darüber finden und darunter einfügen. Unten ist der Code zum Finden des höchsten Werts für 6 Zellen über der Ausgabezelle. Aber ich weiß nicht, wie ich den höchsten Wert finde, wenn die Anzahl der zu analysierenden Zellen darüber mehr oder weniger als 6 ist. Es wird eine Schleife ausgeführt, um Werte mehrerer Zellgruppen mit genau „n“ Zellen darüber zu finden und eine leere Zelle zu erstellen, um das Maximum zu finden. Ich habe die Schleife erstellt, aber ich stecke bei dieser fest. Ich denke, mein Ansatz ist falsch. Ich kann wissen, wie viele Fälle es gibt. Ich kann ein Eingabefeld erstellen, um den Benutzer aufzufordern, die Anzahl der Fälle anzugeben, damit wir nach so vielen Zeilen eine leere Zeile erstellen können. Aber ich stecke bei der Formel fest, mit der der Wert berechnet werden soll. Ich kann keine Variable in die Formel einfügen. Wenn es einen anderen Ansatz gibt, um dies zu tun, dann bin ich dafür zu haben.
Sub maxvalue()
Dim iRow As Integer, iCol As Integer
Dim oRng As Range
Dim nRng As Range
Set oRng = Range("A4")
iRow = oRng.Row
iCol = oRng.Column
Do
If Cells(iRow + 1, iCol) <> Cells(iRow, iCol) Then
Cells(iRow + 1, iCol).EntireRow.Insert Shift:=xlDown
Cells(iRow + 1, iCol + 1).Value = "max"
Cells(iRow + 1, iCol + 2) _
.FormulaR1C1 = "=IF(ABS(MAX(R[-6]C:R[-1]C))<ABS(MIN(R[-6]C:R[-1]C)),MIN(R[-6]C:R[-1]C),MAX(R[-6]C:R[-1]C))"
iRow = iRow + 2
Else
iRow = iRow + 1
End If
Loop While Not Cells(iRow, iCol).Text = ""
End Sub
Unten sehen Sie das Bild dessen, womit ich arbeite und was ich erwarte:
Antwort1
=MAX($A$1:INDIRECT(ADDRESS(ROW()-1,COLUMN())))
Wählt den Maximalwert in den darüberliegenden Zellen in derselben Spalte aus (nicht in der Zelle in der ersten Zeile verwenden). Erfordert die Adressnotation „A1“.
=MAX(INDIRECT(ADDRESS(1,COLUMN()), False):R[-1]C)
Wählt den Maximalwert in den Zellen darüber in derselben Spalte aus (nicht auch in der Zelle in der ersten Zeile verwenden). Benötigt die Adressnotation „R1C1“.
PS. Ich habe nur nationales Excel, daher können die kleineren Fehler in den Formeln liegen. Aber ich denke, das reicht aus, um die Idee dahinter zu verstehen.