【发布时间】:2015-06-03 09:22:06
【问题描述】:
在过去的几个小时里,我一直被困在这个问题上,这让我发疯了。我正在尝试在单元格 B2 中输入此公式:
=IF(OR(C2="Yes",D2="Yes",E2="Yes",F2="Yes",G2="Yes",H2="Yes",I2="Yes"),"Yes",IF(AND(C2="No",D2="No",E2="No",F2="No",G2="No",H2="No",I2="No"),"No"))
公式工作正常,但通过 VBA 宏运行时没有公式输入到单元格中。
我录制了宏,复制并粘贴了输出,但单元格仍然是空白的。这是录音的输出:
Range("B2").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(RC[1]=""Yes"",RC[2]=""Yes"",RC[3]=""Yes"",RC[4]=""Yes"",RC[5]=""Yes"",RC[6]=""Yes"",RC[7]=""Yes""),""Yes"",IF(AND(RC[1]=""No"",RC[2]=""No"",RC[3]=""No"",RC[4]=""No"",RC[5]=""No"",RC[6]=""No"",RC[7]=""No""),""No""))"
我也试过 Range("B2").Formula,没有成功。
有什么建议吗?谢谢!
【问题讨论】:
-
仅供参考,您的 IF 语句真的很长,您可以删除语句的第二部分,因为结果将是相同的
=IF(OR(C2="Yes",D2="Yes",E2="Yes",F2="Yes",G2="Yes",H2="Yes",I2="Yes"),"Yes","No")只是使您的公式更小,以便于调试。当然,除非您想在最后一个 NO 之后添加另一个条件。因此,公式读取如果任何单元格为“是”则返回Yes,否则如果所有单元格为“否”则返回“否”。 (可以使用此评论中包含的缩短公式来实现) -
当您说“单元格保持空白”时,您的意思是在您的代码运行后单元格中没有公式,或者该公式存在但它正在评估为(空白)值?
-
@izzymo 太好了,感谢您的提示。刚刚试了一下,结果是一样的!
-
@FreeMan 代码运行后单元格中没有公式。在 Excel 中手动输入时效果很好。我相信问题在于脚本的语法。我认为这与引号有关。
-
发现问题的家伙!这不是公式/代码。我试图将一个单元格向左移动,向下移动到包含值的列中的最后一个单元格,向右移动,一直选择使用公式 (B2) 的单元格,然后向下填充。显然它没有一直向上
select,它只是移到了那里。 B1是空的,所以它把它填满了。应该调试得更好。我当时累死了。谢谢大家的帮助。