我想根据条件的值设置RANGE.FORMULA属性。我需要使用IF(cond,truepart,falsepart)函数,因为我测试的条件需要一个ListObject引用。 truepart和falsepart本身也是公式。 示例原型代码如下:
Public Sub example()
With ActiveSheet.Range("A1")
.Formula = "=if(TRUE, ""=1"", ""=2"")"
.Select
.Copy
.PasteSpecial xlPasteValues
End With
End Sub
运行example()后,单元格A1显示字符串“= 1”。我期待公式的结果,这只是1。 如果我单击编辑行并按Enter键,公式将计算为1,但我想避免该步骤。
答案 0 :(得分:1)
感谢您的评论。基于此,我改变了我的答案。我希望这次我能理解你:
Public Sub example()
For Each rngCell In ActiveSheet.Range("A1")
If rngCell.Formula Then
rngCell.Formula = "=YourNewAndComplexFormulaHere(x, y, z)"
Else
rngCell.Formula = "=YourNewAndComplexFormulaHere(a, b, c)"
End If
Next rngCell
End Sub
答案 1 :(得分:1)
Sub tableColConditionalReplacement(tabName, colName)
Set thisTable = ActiveSheet.ListObjects(tabName)
nCol = Application.Match(colName, thisTable.HeaderRowRange.Value, 0)
For ii = 1 To thisTable.ListRows.Count
Set myCell = thisTable.DataBodyRange(ii, nCol)
If myCell.Value > 13 Then
myCell.Value = "OMFG!"
Else
myCell.Value = myCell.Value + 1
End If
Next ii
End Sub
我不确定这是否会捕获您想要做的事情,但它允许您访问表列数据,只给出列名。我确信有一些方法可以让它更通用,但我对VBA来说太新了,无法解决它们。