【问题标题】:VBA to shift formula reference down one rowVBA将公式引用向下移动一行
【发布时间】:2017-05-05 14:50:22
【问题描述】:

我目前正在处理一个比较年/年数据的大型文件。

每周我都需要更新文件中的公式以向下移动一行。我想制作一个命令按钮来更新这些公式。

这是一个简单的例子

单元格 c800 包含:=((C235-C229)/C229)*100

我想点击按钮使单元格更新为 =((C236-C330)/C330)*100

有人可以帮我吗?这可能吗?我一直在寻找这个,找不到任何东西。

谢谢

【问题讨论】:

  • 是因为添加了新值,并且最后一行的值从 C229 变为 C330?
  • 这里是另一个例子:stackoverflow.com/questions/43765464/… 如果是 Excel,我会标记为重复。
  • 我尝试了索引/匹配,但它不起作用,因为该单元格(和公式)下面还有其他值不幸的是它需要特定于单元格。我有一个当前有效的公式,它利用了偏移量和直接先例 - 但我不确定如何为这个复杂的公式设置它。
  • 星期数和行有什么关联吗?或者您是否愿意将一个或另一个行号放在工作表的某个地方?然后我们可以在公式中引用该单元格,因此您只需在一处更改数字即可。

标签: excel vba excel-formula


【解决方案1】:

在 C800 中输入此公式,它将始终捕获任何新添加的数据行。

=(INDEX(C5:C799,MATCH(1E+99,C5:C779,1))-INDEX(C5:C799,MATCH(1E+99,C5:C779,1)-6))/INDEX(C5:C799,MATCH(1E+99,C5:C779,1)-6)*100

假设第一个数据点在 C5 中。根据需要更改

这是因为MATCH(1E+99,C5:C799,-1) 找到列中的最后一个数值。

【讨论】:

  • 这对数据集不起作用,不幸的是列中还列出了其他公式。它需要是特定的单元格引用,
  • @AmandaHu 你可以将C799 引用更改为最后一个可能的单元格将/可以是什么?从概念上讲,只要您收紧范围,它就应该起作用。除非您每次都手动(或通过代码)插入东西来调整范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 2012-11-09
  • 1970-01-01
相关资源
最近更新 更多