查找任意数量的单元格上方的最大值或最小值

查找任意数量的单元格上方的最大值或最小值

我想从其上方一定数量的单元格中找到最大值(正数或负数)并粘贴在其​​下方。以下是用于查找输出单元格上方 6 个单元格的最大值的代码。但是,如果要分析的上方单元格数大于或小于 6,我不知道如何找到最大值。它循环查找上方正好有“n”个单元格的多组单元格的值,并创建一个空单元格以查找最大值。我已经创建了循环,但我被困在这个循环上。我认为我的方法不正确。我可以知道有多少个案例。我可以创建一个输入框来要求用户提供多少个案例,以便我们可以在那么多行之后创建一个空行。但我被困在用于计算值的公式上。我无法在公式中插入变量。如果有其他方法可以做到这一点,那么我愿意尝试。

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

下面是我正在处理的内容和我期望的图片: 在此处输入图片描述

答案1

=MAX($A$1:INDIRECT(ADDRESS(ROW()-1,COLUMN())))

选择同一列上方单元格中的最大值(不要在第一行单元格中使用)。需要“A1”地址符号。

=MAX(INDIRECT(ADDRESS(1,COLUMN()), False):R[-1]C)

选择同一列上方单元格中的最大值(第一行单元格中不要也使用该值)。需要“R1C1”地址符号。

PS. 我只有国内的Excel,所以公式中可能存在小错误。但我认为理解它们的概念就足够了。

相关内容