
特定の数のセルの最大値 (正または負) を見つけて、その下に貼り付けたいです。以下は、出力セルの上の 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」アドレス表記が必要です。
追伸:私はナショナル Excel しか持っていないので、数式に小さなエラーがあるかもしれません。しかし、それらのアイデアを理解するには十分だと思います。