【问题标题】:Excel VBA - Loop to insert formulasExcel VBA - 循环插入公式
【发布时间】:2015-05-16 00:25:15
【问题描述】:

我遇到了一个充满公式错误的工作表。该项目本身非常重复,因此我决定编写一些简单的 VBA 代码以节省一些时间。

问题是我的代码不起作用。我认为这确实是一个简单的问题,但它一直在我的脖子上。

我已经删除了所有重复的代码片段,以便于理解。

Sub corrigirerro()
    Dim r, i As Integer

    For r = 17 To 28
        i = r - 16    
        Worksheets(r).Select    
        Range("D73").ClearContents    
        Range("D73").Formula = "=SEERRO(SOMARPRODUTO('RD - " & i & "'!D266:D268;'RD - " & i & "'!E266:E268)/SOMA('RD - " & i & "'!D266:D268);0)"

【问题讨论】:

  • 您遇到的具体问题是什么?你有错误吗?输出不是你期望的吗?
  • 什么不起作用,预期结果是什么?
  • 您可能需要先将 i 转换为字符串值,否则 & 将无法正常工作。
  • @Tom & 操作员将任何东西粗暴地转换为可转换的String。不需要显式转换。
  • 我不希望隐式转换起作用。即使在这种情况下,我也建议不要这样做。

标签: vba excel


【解决方案1】:

您的公式使用的是您的系统在区域设置中为列表分隔符设置的分号。无论区域设置如何,VBA 都使用逗号设置 Range .Formula property,但确实有一个将使用区域设置的 Range .FormulaLocal property

    Range("D73").Formula = "=SEERRO(SOMARPRODUTO('RD - " & i & "'!D266:D268, 'RD - " & i & "'!E266:E268)/SOMA('RD - " & i & "'!D266:D268), 0)"
    Range("D73").FormulaLocal = "=SEERRO(SOMARPRODUTO('RD - " & i & "'!D266:D268; 'RD - " & i & "'!E266:E268)/SOMA('RD - " & i & "'!D266:D268); 0)"

将您的公式切换为逗号或使用.FormulaLocal 属性。

【讨论】:

  • .Formula 是否也需要函数的国际名称?
  • 我现在没有时间将机器切换到 PT-BR Office(区域设置为 ;),但我相信 SEERRO 不必更改为IFERROR.Formula 工作;只有;,。希望我们能得到 OP 对此的回应。 (我的 gmail仍然因为去年将机器更换为 IT-IT 以帮助欧洲用户而搞砸了!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多