【问题标题】:Excel - Update formula references for new locationExcel - 更新新位置的公式引用
【发布时间】:2019-04-26 15:43:04
【问题描述】:

当我复制一个包含公式的单元格然后粘贴到同一张表上的另一个单元格时,公式的单元格引用会更新以反映新位置(考虑绝对、相对和混合单元格引用等) .

有没有办法以编程方式在 Excel VBA 中更新公式,将字符串公式从一个位置更新到另一个位置,而无需实际复制单元格并粘贴到另一个位置?

如果没有,如何复制一个单元格并粘贴到 VBA 中的另一个位置?

编辑:Axel 很好地回答了问题的第二部分。有没有办法完成问题的第一部分,而无需将其粘贴到单元格中(因为如果我需要做很多这些,那么我不得不猜测它可能会有点慢)?

【问题讨论】:

  • 使用FormulaR1C1 通常不需要为新位置更新公式引用。例如,.FormulaR1C1 = "=RC[-1]+R[-1]C" 将始终将左侧单元格和上方单元格相加,与应用此公式的位置无关。
  • 谢谢@AxelRichter,这很有趣 - 但这是我需要和想要的参考资料的更新。

标签: excel vba excel-formula


【解决方案1】:

我真的建议您阅读 Excel VBA 中的 R1C1 样式符号和 FormulaR1C1 属性。这正是Excel 本身管理更新新位置的公式引用的方式。

例如,如果您在活动工作表的D5 中有一个公式,那么下面的代码将把该公式的副本放入E6,这正是 Excel 在其 GUI 中执行此操作的方式。然后sFormula2 将包含A1 样式符号中的更新公式。

With ActiveSheet
 sFormula1 = .Range("D5").Formula
 sFormulaR1C1 = .Range("D5").FormulaR1C1
 .Range("E6").FormulaR1C1 = sFormulaR1C1
 sFormula2 = .Range("E6").Formula
End With

【讨论】:

  • 感谢 Axel,显然我确实需要阅读它,非常感谢。这当然实现了我问题的第二部分 - 我假设它与 Excel 一样适用于所有不同类型的引用,例如绝对、相对、混合、对其他工作表的引用、对其他文件的引用?
  • 不要看嘴里的礼物马,但是您或任何人是否知道在不主动写入另一个单元格的情况下做到这一点的方法? (我必须想如果我做很多这些会更快)
  • 我已经检查了所有内容,除了对另一个文件的引用(我必须出去),这一切都与 Excel 完全一样。
  • @James Carlyle-Clarke:在不主动写入另一个单元格的情况下执行此操作需要使用具有字符串算术(或正则表达式)的代码来实现公式解析器。遗憾的是,目前没有我真的可以推荐的formula parser for Excel VBA[1]。 [1] 搜索关键字
  • 再次感谢。我不得不问,在我按照你提供的原始方式做之前,是否有另一条更快的路线,但我知道这是一个很长的路要走。是的,它是我正在查看的那个公式解析器的一个版本(特别是找到所有非绝对引用的那个)。坦率地说,我有一个很好的开始,我有第二种非常不同的方式来实现同样的事情(感谢你),我将尝试在相关问题stackoverflow.com/questions/53265024/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 2014-01-05
相关资源
最近更新 更多