如何使用VBA将逻辑公式自动填充到特定单元格?

时间:2019-07-10 13:54:11

标签: excel vba autofilter

两个问题:1)我可以使用VBA将逻辑公式自动填充到单元格中,以及如何(我的代码有问题)和2)仅在输入数据时才能自动填充逻辑公式吗?

我要放入单元格而不是VBA时要使用的公式有效:

=IF(ISNUMBER(SEARCH("$",$A2)),"Scanner 2",IF(ISNUMBER(SEARCH("#",$A2)),"Scanner 1","Error"))

对于VBA,我还使用了相对坐标,但无效:

Range("C2").Value="=IF(ISNUMBER(SEARCH('$',RC[-2])),'Scanner 2', IF(ISNUMBER(SEARCH('#',RC[-2])),'Scanner 1','Error'))"

可能有帮助的图片:

Picture of VBA and debug highlighted!

Picture of Spreadsheet

1 个答案:

答案 0 :(得分:1)

问题是使用单引号+您未将其添加为. Formula的组合:

所以:

Range("C2").Formula = "=IF(ISNUMBER(SEARCH(""$"",$A2)),""Scanner 2"",IF(ISNUMBER(SEARCH(""#"",$A2)),""Scanner 1"",""Error""))"

应该工作

此外,我在您的代码中看到您正在使用.Select,有很多方法可以避免使用它。检查this链接。

下面的示例将执行相同的操作:

With ThisWorkbook.Sheets("Sheet1")
    .Range("C2:C100").Formula = "=IF(ISNUMBER(SEARCH(""$"",$A2)),""Scanner 2"",IF(ISNUMBER(SEARCH(""#"",$A2)),""Scanner 1"",""Error""))"
End With

您会注意到Excel会将公式自动调整为正确的单元格引用。