【问题标题】:Increment Autofill Range by Variable Number按变量数增加自动填充范围
【发布时间】:2011-10-05 13:05:19
【问题描述】:

工作项目的一项要求是将特定数量类别的小时值按天汇总在一起。这些值存储在电子表格中的一长列中;为了获得这些值,我将每 24 行相加到新的一天。这可以通过遍历电子表格并将每个循环的值增加 24 来实现。

例如:

first = 1
second = 24
i = 0
While Worksheets("Data").Range("A1").offset(i, 0) <> ""
    Worksheets("Data").Range("C1").offset(i, 0).Formula = "=SUM(B" & first & ":B" & second & ")")
    first = first + 24
    second = second + 24
Wend 

其中 A 列是类别,B 列是每小时数据。 B 列将是 A 列的长度 * 24。

这会产生类似...的结果

=SUM(B1:B24)
=SUM(B25:B48)
=SUM(B49:B72)

.. 等等。

这很好用,但速度很慢。我想做的是在整个范围内使用 AutoFill,但我不确定如何编写它,以便每次将值增加 25。到目前为止,我只能让它为每个值增加一,其中

=SUM(B1:B24)

变成

=SUM(B2:B25)

有没有办法在一个范围内使用自动填充,它会增加一个可变数字——在本例中为 24?

提前致谢。

【问题讨论】:

  • 那是你的实际代码吗?你在哪里增加 i ?
  • 难道不能使用 Excel 小计吗?它会很容易地做到这一点(只要你有一个关于这一天的专栏)。
  • @Tim:不,这是演示这个想法的示例代码。我现在看到我应该进一步审查它。在循环中,i 会加一。
  • @Tiago Cardoso:我会试试小计;我现在不在工作,但明天早上我会试一试。谢谢。
  • 好吧@PaulR,正如我所说...有很多方法可以做同样的事情,也许使用小计,也许正如我在下面提到的那样......只需选择最适合您的需求:-)

标签: vba excel autofill


【解决方案1】:

可能有很多方法可以做到这一点,无论是否使用 VBA。

我向您展示了一个仅使用 Excel 的解决方案,但可以迁移到 VBA 以避免使用其他列(我相信必须有一种方法可以在不使用支持列的情况下做到这一点,社区中的其他人可能会记得如何,最终)。

嗯,这里的诀窍是使用INDIRECT 公式。

我假设您将求和公式应用于 C 列。

在 D 和 E 列中,您将存储行索引。然后,我们将:

|D      |E      |
|-------|-------|
|1      |24     |
|=D1+24 |=E1+24 |
|=D2+24 |=E2+24 |

现在,在 C 列中,不要将 Sum 与直接值一起使用,而是使用:

=SUM(INDIRECT("B"&D1):INDIRECT("B"&E1))
=SUM(INDIRECT("B"&D2):INDIRECT("B"&E2))
=SUM(INDIRECT("B"&D3):INDIRECT("B"&E3))

这段代码可以随意往下拖,只要把C、D、E列拖在一起就行了。

同样,它也可以使用 VBA 以更出色的方式完成(也许仅使用 Excel 以更智能的方式完成,呵呵)但这是我想到的方式。无论如何,我在这里看到的关于简单 VBA 实现的大多数问题都是供个人使用的,所以使用其他列不会有问题。

如果您更喜欢(或需要)使用 VBA,请起草您的代码,我们会为您提供帮助。

希望对你有帮助。

【讨论】:

  • Tiago,这不是一个坏主意。明天早上我会先试一试,然后告诉你。非常感谢。
【解决方案2】:

如果您对当前方法的唯一抱怨是它的速度,那么您可以通过在插入公式时暂停计算来显着加快速度:

Application.Calculation = xlCalculationManual
'do your thing
Application.Calculation = xlCalculationAutomatic

【讨论】:

  • 蒂姆,谢谢你的建议。我有一个方法可以启动电子表格中的每个流程,并且在这个“主要”方法的开头和结尾都有这些行。
猜你喜欢
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多