【问题标题】:Using variables in R1C1 formula construction在 R1C1 公式构造中使用变量
【发布时间】:2015-01-25 04:14:49
【问题描述】:

我无法让这个公式接受变量作为 R1C1 公式中的行。

ActiveCell.FormulaR1C1 = _
    "=+IF(TipoLinea(NomeFoglioCorrente2(),""Grafico 2"",1,1)=""Esponenziale"",(R" & NumeroRighe + 13 & "C9*EXP(R" & NumeroRighe + 13 & "C10*RC8))," & Chr(10) & "IF(TipoLinea(NomeFoglioCorrente2(),""Grafico 2"",1,1)=""Logaritmica"",(R" & NumeroRighe + 13 & "C9*LN(RC8)+R" & NumeroRighe + 13 & "C10)," & Chr(10) & "IF(TipoLinea(NomeFoglioCorrente2(),""Grafico 2"",1,1)=""Lineare"",(R" & NumeroRighe + 13 & "C9*RC8+R" & NumeroRighe + 13 & "C10)," & Chr(10) & "IF(TipoLinea(NomeFoglioCorrente2(),""Grafico 2"",1,1)=""Potenza"",(R" & NumeroRighe + 13 & "C9*(RC8^(R" & NumeroRighe + 13 & "C10)" & _
    "rore""))))"

TipoLinea()NomeFoglioCorrente2() 是自定义函数。

NumeroRighe + 13 在我的测试中等于 313,但对于其他单元格,这会发生变化。

【问题讨论】:

  • 您目前正在获得什么价值或问题,实际上应该是什么?
  • 你遇到了什么错误?
  • VBA 中的一行字符串的长度是有限制的,您需要找到缩短公式字符串的方法。例如,您可以将它的块分配给几个单独的变量并使用.FormulaR1C1 = Part1 & Part2 & Part3
  • 可能还有其他东西,但我相信最后一行"rore""))))"应该是", ""rore""))))"

标签: excel vba reference


【解决方案1】:

在处理包含引号字符串的动态构造公式时,我喜欢通过使用单引号并在将公式填充到单元格之前替换它们来避免使用双引号。

Dim sFRM As String, sLFSP As String
sLFSP = Chr(10) & Chr(32) & Chr(32)
NumeroRighe = 300
sFRM = _
    "=IF(TipoLinea(NomeFoglioCorrente2(),'Grafico 2',1,1)='Esponenziale',R" & NumeroRighe + 13 & "C9*EXP(R" & NumeroRighe + 13 & "C10*RC8)," & sLFSP & _
     "IF(TipoLinea(NomeFoglioCorrente2(),'Grafico 2',1,1)='Logaritmica', R" & NumeroRighe + 13 & "C9*LN(RC8)+R" & NumeroRighe + 13 & "C10," & sLFSP & _
     "IF(TipoLinea(NomeFoglioCorrente2(),'Grafico 2',1,1)='Lineare', R" & NumeroRighe + 13 & "C9*RC8+R" & NumeroRighe + 13 & "C10," & sLFSP & _
     "IF(TipoLinea(NomeFoglioCorrente2(),'Grafico 2',1,1)='Potenza', R" & NumeroRighe + 13 & "C9*POWER(RC8, R" & NumeroRighe + 13 & "C10), 'rore'))))"
ActiveCell.FormulaR1C1 = Replace(sFRM, Chr(39), Chr(34))
'ActiveCell.FormulaR1C1 = Chr(39) & Replace(sFRM, Chr(39), Chr(34))  ' use this to check formula

我保留了您在公式中使用换行符的方式,以帮助将其排成一行,以便在公式栏中进行手动检查。我还从计算部分删除了不必要的括号,因为数学层次结构的一般规则应该足以涵盖这一点。不过我确实介绍了POWER,它更符合您对EXPLN 的使用。

我在尝试使串联公式正确时学到的另一个技巧是在它前面加上一个单引号,以便它作为字符串进入单元格。如果您返回工作表并删除单引号,Excel 会很快告诉您公式的语法是否正确,如果正确,结果会告诉您公式是否正确。

【讨论】:

  • 吉普车,非常感谢您的帮助和提示!现在代码运行良好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多