我有一系列IF / ELSE子句,看看项目是否适合三个类别中的一个。如果某个项目不适合其中任何一项,则其类别字段应为“SELECT”。
现在,使用简单的文本字符串,它可以正常工作。但是我还想在一个空行中包含一个简单的公式(如在工作表中的大多数其他自动填充字段中)来清空该字段。基于我在其他情况下使用的代码,我想将单元格的公式设置为
=IF(ISBLANK($A2, "", "SELECT")
(......细胞本身就是B2)
问题是,要查看的单元格取决于它所在的行; A2,A3,A4等。列号保持不变,但行号由变量iImportCounter
定义。
我已经尝试了.Value
和.Formula
,"""
和Chr(34)
,但它似乎仍无效。该行的完整代码是
Else:
wsCalc.Cells(iImportCounter, 3).Formula = "=IF(ISBLANK($" & Application.ConvertFormula(Cells(iImportCounter, 2), xlA1) & ", " & Chr(34) & Chr(34) & ", " & Chr(34) & "SELECT" & Chr(34) & ")"
有什么东西非常明显我不见了吗?
我在其他地方看到的评论说,它在模块中而不是基于工作表的宏可能会使某些代码出现故障,但我不确定是什么或如何。
答案 0 :(得分:3)
这取决于iImportCounter
的起始位置。如果 3 (B3中的第3行)则公式为
with wsCalc.Cells(iImportCounter, 3)
.FormulaR1C1 = "=IF(ISBLANK(R[-1]C1), """", ""SELECT"")
end with
RC1 中的 R 表示您将公式放在同一行上,如果您要放置第2行并且想要引用A2,那么 R 就是您所需要的。如果公式进入B3,则需要使用 R [-1] C1 引用当前行减1。
RC1 中的 C1 表示“锁定”(绝对)列A(第一个列) 。这似乎不是绝对必要的,因为公式不会横向移动。
答案 1 :(得分:1)
假设[["A button"], ["B button"]]
是对一系列单元格的引用:
wsCalc
作为一个工作示例:
wscalc.FormulaR1C1 = "=IF(ISBLANK(RC1),"""",""SELECT"")"