【问题标题】:Selecting a group of cells up in a range在范围内向上选择一组单元格
【发布时间】:2014-04-23 22:19:22
【问题描述】:

我有一个 For Next 循环,它获取一个范围内的每个单元格,选择它下面的 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

任何帮助表示赞赏。 谢谢, 授予

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    再次编辑:更强大一点

    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
    

    【讨论】:

    • 谢谢蒂姆,我会尝试使用它,但我需要保留 E1.Value 而不仅仅是 10。用户在 E1 中输入一个可以是任何整数的值。当我尝试 -E1 时,它不起作用。同样,调整大小 (11,1) 必须根据 E1 值。
    • Tim,在 Set r = 时崩溃 ..... 好的,如果我删除负数并使用正数 10。此外,我还有一个问题是如何使用 E1.Value 而不是特定的整数??????
    • 好吧,如果Rng 至少不在第 10 行或以下,它就会崩溃……再做一些编辑。
    • 是的。谢谢你。现在我唯一的问题是 BLOCK_SIZE 值必须是单元格 E1 中的值,它可以是任何整数。我将尝试将其设置为 Long = Cell ("E1").Value ??我很感激你在这里度过的时间。谢谢。
    • 不,因为 Long= 必须是一个常数。不接受 Range("E1").Value。有什么建议吗?
    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多