【发布时间】:2012-01-02 20:43:48
【问题描述】:
我试图将公式直接插入到单元格中,并让它根据放置位置 (R1C1) 引用它周围的单元格。我在 excel 中打开了记录宏功能,并使用所需的公式编辑了一个单元格,然后按 Enter。 Excel 为我提供了以下功能。奇怪的是,这是 excel 给我的确切公式,当我尝试运行该函数时,它会出现“运行时错误'1004':应用程序定义或对象定义错误。 使用背景:该函数本身仅用于我正在创建的预算,它使用一个单元格超过两列来决定是继续编号还是创建上述数字的子集(TR 是总请求的符号,所以任何不是 TR,是总请求的子集,将被标记为最后一个已知数字 & 'A'、'B' 等)
ActiveCell.FormulaR1C1 = _
"=IF(RC[2]=""TR"",IF(R[-1]C[2]<>""TR"",IF(R[-2]C[2]<>""TR"",IF(R[-3]C[2]<>""TR"",IF(R[-4]C[2]<>""TR"",IF(R[-5]C[2]<>""TR"",IF(R[-6]C[2]<>""TR"",IF(R[-7]C[2]<>""TR"",""add more"",R[-7]C+1),R[-6]C+1),R[-5]C+1),R[-4]C+1),R[-3]C+1),R[-2]C+1),R[-1]C+1), IF(R[-1]C[2]=""TR"",IF(RC[2]<>""TR"",R[-1]C&""A"",R[-1]C+1),IF(R[-2]C[2]=""TR"",R[-2]C&""B"",IF(R[-3]C[2]=""TR"",R[-3]C&" & "(R[-4]C[2]=""TR"",R[-4]C&""D"",IF(R[-5]C[2]=""TR"",R[-5]C&""E"",IF(R[-6]C[2]=""TR"",R[-6]C&""F"",IF(R[-7]C[2]=""TR"",R[-7]C&""G"",""""))))))))"
对此的任何帮助将不胜感激, 谢谢
编辑: 我在工作,无法在线回复,所以我决定在这里尝试:以下是录制的宏。
Sub Macro7()
'
' Macro7 Macro
'
'
ActiveCell.FormulaR1C1 = _
"=IF(RC[2]="""","""",IF(RC[2]=""TR"",IF(R[-1]C[2]<>""TR"",IF(R[-2]C[2]<>""TR"",IF(R[-3]C[2]<>""TR"",IF(R[-4]C[2]<>""TR"",IF(R[-5]C[2]<>""TR"",IF(R[-6]C[2]<>""TR"",IF(R[-7]C[2]<>""TR"",""add more"",R[-7]C+1),R[-6]C+1),R[-5]C+1),R[-4]C+1),R[-3]C+1),R[-2]C+1),R[-1]C+1), IF(R[-1]C[2]=""TR"",IF(RC[2]<>""TR"",R[-1]C&""A"",R[-1]C+1),IF(R[-2]C[2]=""TR"",R[-2]C&""B"",IF(R[-3]" & _
"R"",R[-3]C&""C"",IF(R[-4]C[2]=""TR"",R[-4]C&""D"",IF(R[-5]C[2]=""TR"",R[-5]C&""E"",IF(R[-6]C[2]=""TR"",R[-6]C&""F"",IF(R[-7]C[2]=""TR"",R[-7]C&""G"","""")))))))))"
Range("C121").Select
End Sub
这是录制宏功能中录制的宏。
公式是在 excel 中设计的,我正在尝试在宏中重用它。我没有尝试选择案例或类似的原因是因为此公式旨在根据其周围的单元格动态更改。因此,如果我在其上方添加一条线并插入一条新的预算线(这是针对上面提到的预算),它下面的线将相应地改变。
edit:ex 在 excel 中的样子:
【问题讨论】:
-
你能描述一下你想要做什么吗?您庞大的一系列嵌套 IF 表明 VBA Select Case 或循环将是更好的解决方案。但我不知道预期的结果是什么......
-
我想看看你记录的公式的快照 - 它给出了一个有效的答案吗?
-
我已经给出了上面录制的宏的快照:作为它的作用的一个例子:如果你有一个预算线,它将取它上面的数字,如果你有,则加 1对预算项目的修改,您可以保留相同的数字,(以允许将项目组合在一起)并只需添加一个字母、a、b、c 等。如上所述,我想使用公式的原因是此预算会经常更新,并使用公式确保编号项目自动调整。虽然我愿意接受建议。
-
澄清一下,上面的 cmets 要求查看结果公式。代码运行后单元格中的公式应该是什么样子?
-
对不起,在这里(将在单元格 c128 中),还在输出上方发布了图片链接 =IF(E128="","",IF(E128="TR",IF (E127"TR",IF(E126"TR",IF(E125"TR",IF(E124"TR",IF(E123"TR",IF(E122" TR",IF(E121"TR","添加更多",C121+1),C122+1),C123+1),C124+1),C125+1),C126+1),C127+1 ), IF(E127="TR",IF(E128"TR",C127&"A",C127+1),IF(E126="TR",C126&"B",IF(E125="TR", C125&"C",IF(E124="TR",C124&"D",IF(E123="TR",C123&"E",IF(E122="TR",C122&"F",IF(E121="TR ",C121&"G",""))))))))))