Excel 在一个范围内向上选择一组单元格

Excel 在一个范围内向上选择一组单元格,excel,vba,Excel,Vba,我有一个FORNEXT循环,它取一个范围内的每个单元格,选择下面的10个单元格,对这10个单元格进行计算,并将结果放入下一列。例如,它将取单元格A1,求和A1-A10,并将结果放在B1中。然后循环到A2,求A2-A11的和,并将结果放入B2。下面的代码摘录可以很好地工作 我想总结而不是总结。选择单元格A20,将A20-A10相加,并将结果放入B20。我没能做到。在以下代码中,E1的值为10,是从范围内的每个单元中向下选择的单元数 For Each Rng In Range("LogRd1")

我有一个FORNEXT循环,它取一个范围内的每个单元格,选择下面的10个单元格,对这10个单元格进行计算,并将结果放入下一列。例如,它将取单元格A1,求和A1-A10,并将结果放在B1中。然后循环到A2,求A2-A11的和,并将结果放入B2。下面的代码摘录可以很好地工作

我想总结而不是总结。选择单元格A20,将A20-A10相加,并将结果放入B20。我没能做到。在以下代码中,E1的值为10,是从范围内的每个单元中向下选择的单元数

For Each Rng In Range("LogRd1")
    Rng.Select
    Selection.Resize((Range("E1").Value), 1).Select
    Rng.Offset(, 1).Formula = ((Application.WorksheetFunction.Sum(Selection)) / ((Range          ("E1").Value + 0.0001) - (Application.WorksheetFunction.Sum(Selection))))

Next Rng
谢谢你的帮助。 谢谢 格兰特

再次编辑:更健壮一点

Dim BLOCK_SIZE as Long
Dim Rng As Range, r as Range, s As Variant

BLOCK_SIZE = Range("E1").Value 

For Each Rng In Range("LogRd1")
If Rng.Row >= BLOCK_SIZE Then
    Set r = Rng.Offset(-(BLOCK_SIZE-1), 0).Resize(BLOCK_SIZE, 1)
    s = Application.Sum(r) 
    If Not IsError(s) Then
        Rng.Offset(0, 1).Value = s / ((BLOCK_SIZE + 0.0001) - s)
    Else
        Rng.Offset(0, 1).Value = "Sum Error!"
    End If
End If 'can offset to at least BLOCK_SIZE above this cell
Next Rng

谢谢Tim,我会尝试使用它,但我需要保留E1.值,而不仅仅是10。用户在E1中输入一个可以是任意整数的值。当我尝试-E1时,它不起作用。类似地,调整大小11,1必须根据E1值。Tim,在设置r=。。。。。好的,如果我去掉负片,用正片10。此外,我仍然有一个问题,即如何使用E1.Value而不是特定的整数???如果Rng不在第10行或以下,它将崩溃。。。又做了一些编辑。是的。非常感谢。现在我唯一的问题是BLOCK_SIZE值必须是Cell E1中的值,它可以是任何整数。我将尝试将其设置为Long=Cell E1.Value??我很感激你在这里度过的时光。谢谢。不,只要=必须是常数。不接受Range1.Value。建议?