【问题标题】:Creating Excel formula in VBA在 VBA 中创建 Excel 公式
【发布时间】:2020-09-30 21:20:52
【问题描述】:

我正在 VBA 中创建一个 VLOOKUP 公式。该公式在我的电子表格中运行良好,但是当我尝试在 VBA 中自动化它时,我在公式中得到了一个 @'。

这是宏中的行:

Range("B" & intUserRow).FormulaR1C1 = "=VLOOKUP(TEXT(A" & intUserRow & "," & vbDoubleQuote & "0" & vbDoubleQuote & "),UserNames!A1:B166,2)"

在 VBA 中添加一个 Watch,它会告诉我:

"=VLOOKUP(TEXT(A7,"0"),UserNames!A1:B166,2)"

但在 Excel 中,公式以 @ 和单引号结尾:

=VLOOKUP(TEXT(@'A7',"0"),UserNames!'A1':'B166',2)

@' 是从哪里来的?我短暂地看到了一个弹出窗口,上面写着“我的公式中哪里有@?”但是弹出窗口在我阅读之前就消失了。 我认为 Excel 不喜欢某些格式,但在 Watch 窗口中对我来说是正确的。

【问题讨论】:

  • 刚发现A6后面还有一个单引号
  • 试试.Fomula而不是.FormulaR1C1
  • A7 中的值是多少,您能否包括在 Excel 中键入的公式。
  • 找到了答案!我正在混合我的单元格符号。使用 FormulaR1C1 = 但将单元格值指定为 A7 我更改为 Formula = 并且它现在可以工作了。
  • 启发我们。请自行回答您的发现,它可能对未来的读者有所帮助

标签: excel vba excel-formula formatting


【解决方案1】:

当您在 VBA 中创建 Excel 公式时,在录制宏时首先在 Excel 电子表格中创建它始终是明智之举,VBA 将为您的公式创建代码,您可以按原样使用它,也可以将其调整为你的需求。

在这种情况下,我相信您需要对单元格引用使用 RC 单元格表示法,例如:

如果您将公式放在“B1”单元格中,则使用 R[0]C[-1] 而不是使用“A1”,这意味着“从 B1 向左移动 0 行和 1 列”

像 $A$1:$B$166 这样的绝对引用将是:R1C1:R166C2

试试这个代码:

Range("B" & intUserRow).FormulaR1C1 = "=VLOOKUP(TEXT(RC[-1],""0""),UserNames!R1C1:R166C2,2,FALSE)"

【讨论】:

    【解决方案2】:

    正如我所说: 找到了答案!我正在混合我的单元格符号。 我正在使用 公式R1C1 = 但是,我将单元格值指定为 A7 我改为 公式 = 它现在正在工作。 原来的: Range("B" & intUserRow).FormulaR1C1 = "=VLOOKUP(TEXT(A" & intUserRow & "," & vbDoubleQuote & "0" & vbDoubleQuote & " ),用户名!A1:B166,2)" 修正版: Range("B" & intUserRow).Formula = "=VLOOKUP(TEXT(A" & intUserRow & "," & vbDoubleQuote & "0" & vbDoubleQuote & "),UserNames!A1:B166,2)"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      相关资源
      最近更新 更多