【问题标题】:Syntax for looping formula through cells error通过单元格错误循环公式的语法
【发布时间】:2018-07-18 21:58:35
【问题描述】:

当我运行此代码时,我得到一个“应用程序定义或对象定义的错误”,我不知道如何修复我的代码。我是 VBA 和宏的新手。下面是我的代码。我试图通过将一个值与另一个列表进行比较然后向下移动一行来逐个单元格地进行。

For i = 1 To 133
    For k = 1 To 133
         Worksheets("Sheet1").Cells(i + 1, 2).FormulaR1C1 = "=IF(ISNUMBER(SEARCH(Cells(i + 1, 2),Sheet2!R[k+1]C[3])),Sheet2!R[k+1]C[5],"""")" 
    Next k  
Next i

【问题讨论】:

  • 由于目标单元格在内部循环中没有改变,因此您将在同一单元格中替换公式 133 时间。这不是你的问题,而是提出了另一个问题。
  • 您要在第一个单元格中输入什么公式?并且,它应该在下一个单元格中更改为什么。
  • 我想将目标单元格中​​的值与列表进行比较。
  • 第一个和第二个单元格中您想要的公式到底是什么,然后我们可以帮助您将其转换为可行的 vba。
  • 所以我试图比较第一个单元格左侧的值是否在另一组数据中找到,如果找到,我希望第一个单元格填充来自另一列但与同一行的数据具有匹配数据的单元格。我正在尝试找到一种快速执行此操作的方法,并认为宏是最好的。

标签: vba excel


【解决方案1】:

未经测试:

For i = 1 To 133

    For k = 1 To 133
         Worksheets("Sheet1").Cells(i + 1, 2).FormulaR1C1 = _
           "=IF(ISNUMBER(SEARCH(" & Cells(i + 1, 2).Address(False, False, xlR1C1) & _
           ",Sheet2!R[" & (k+1) & "]C[3])),Sheet2!R[" & (k+1) & "]C[5],"""")"

    Next k  

Next i

【讨论】:

  • 感谢您的回复,不幸的是,同样的错误仍然出现。
  • 如果您手动输入公式是否有效?尝试使用Debug.Print 查看生成的公式,然后将其复制/粘贴到单元格中,看看会出现什么错误。
  • @TimWilliams 您正在混合 A1 和 R1C1 样式。但我怀疑最终结果是 OP 想要的,但如果你使用它会修复错误:Cells(i + 1, 2).Address(0,0,xlR1C1)
  • 如果我不需要 R1C1 并且可以使用公式就可以了,我不确定哪个更好。
  • @ScottCraner - 谢谢你的收获。我几乎从不使用 R1C1 方法...
猜你喜欢
  • 2020-10-17
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多