Возможно, что-то вроде этого, который возвращает адрес (например, $D$9
) ячейки "max", но может быть настроен так, чтобы при необходимости возвращать строку и столбец.
Обратите внимание, что это предполагает, что rng
содержит только числовые значения и может быть увеличен до ошибки, например, если есть текст. Он также вернет первый адрес максимального значения только в том случае, если максимальное значение появляется более одного раза.
Function MaxABS(rng As Range) As String
Dim arr As Variant
arr = rng.Value
Dim i As Long, j As Long
Dim tempMax As Double
Dim tempRow As Long, tempCol As Long
For i = 1 To UBound(arr, 1)
For j = 1 To UBound(arr, 2)
arr(i, j) = VBA.Abs(arr(i, j))
If arr(i, j) > tempMax Then
tempMax = arr(i, j)
tempRow = i
tempCol = j
End If
Next j
Next i
MaxABS = rng.Cells(tempRow, tempCol).Address
End Function
Чтобы вернуть строку и столбец (разделенные запятой, поскольку желаемый формат вывода не был указан), замените последнюю строку
MaxABS = rng.Cells(tempRow, tempCol).Address
со следующим:
With rng.Cells(tempRow, tempCol)
MaxABS = .Row & "," & .Column
End With
с примером выборки 9, 4
вместо $D$9
.