
Quero encontrar o maior valor (positivo ou negativo) de um certo número de células acima dele e colar abaixo dele. Abaixo está o código para encontrar o maior valor para 6 células acima da célula de saída. Mas não sei como encontrar o maior valor se o número de células acima dele a serem analisadas for maior ou menor que 6. Ele faz um loop para encontrar valores de vários grupos de células com exatamente "n" número de células acima dele e crie uma célula vazia para encontrar o máximo. Eu criei o loop, mas estou preso neste. Acho que minha abordagem está incorreta. Posso saber quantos casos existem. Posso criar uma caixa de entrada para pedir ao usuário quantos casos para que possamos criar uma linha vazia após tantas linhas. Mas estou preso na fórmula a ser usada para calcular o valor. Não consigo inserir uma variável dentro da fórmula. Se houver qualquer outra abordagem para fazer isso, então estou pronto para isso.
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
Abaixo está a foto do que estou trabalhando e do que espero:
Responder1
=MAX($A$1:INDIRECT(ADDRESS(ROW()-1,COLUMN())))
Seleciona o valor máximo nas células acima na mesma coluna (não use na célula da primeira linha). Precisa da notação de endereço "A1".
=MAX(INDIRECT(ADDRESS(1,COLUMN()), False):R[-1]C)
Seleciona o valor máximo nas células acima na mesma coluna (não use também na célula da primeira linha). Precisa da notação de endereço "R1C1".
PS. Tenho Excel nacional apenas, então os pequenos erros talvez nas fórmulas. Mas acho que é o suficiente para entender a ideia deles.