使用VBA用公式replace零星#N / A单元格

我有来自不同来源的数据通过获取数据/连接进入名为RawData的工作表/表。 我创build了一个链接到button的macros,用户必须单击以使用索引/匹配function填充一些RawData中的数据,该索引/匹配function指向另一个工作簿,其中RawData的预留号码与另一个工作簿匹配,以确定留。

我不会将所述工作簿追加到RawData表中,原因不同。 如果需要的话,我可以走这条路线,但我想在我们过桥之前会有一条更简单的路线。 我遇到的问题是,一旦macros运行,另一个工作簿有时可能没有预留数据。 在这些情况下,我不得不手动确定这些数据。

这个新的数据可以放在我的主要工作簿中,但是我现在已经在它自己的工作簿(LOSNAintoActualLOS.xlsm)中,因为我已经在做这个工作了。 公式必须粘贴到表中,因为当表刷新时,通常具有逗留长度的数据行将移除公式并将其replace为原始值(空白单元格)。

我需要的是我的代码遍历表的F列中的所有单元格,确定具有#N / A错误的单元格,然后将公式粘贴到错误单元格中。 我做了一些研究,似乎找不到适合我需要的东西。 我试图做这个循环,但看到我仍然是VBA编码的新手,这绝对不是我的强项。

Sub Macro2() Dim r As Integer LastRow = Range("B" & Rows.Count).End(xlUp).Row With Worksheets("Sheet1").Range("F2:F" & LastRow) For r = 2 To LastRow If .IsError(Worksheets("Sheet1").Range("F" & r)).Value Then .Formula = "INDEX(LOSNAintoActualLOS.xlsm!Table1[#Data],MATCH([@Reservation],LOSNAintoActualLOS.xlsm!Table1[Reservation],0),7)" .Value = .Value End If Next r End With End Sub 

当我运行我的If语句的代码时,我得到运行时错误“438”:对象不支持此属性或方法。 如果我从.IsError中删除第一个句点,我得到编译错误:无效的限定符。

IsError不是Worksheets("Sheet1").Range("F2:F" & LastRow)

把它切换成这样。

 Sub Macro2() Dim r As Long Dim LastRow As Long LastRow = Worksheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Row For r = 2 To LastRow With Worksheets("Sheet1").Range("F" & r) If IsError(.Value) Then .Formula = "INDEX(LOSNAintoActualLOS.xlsm!Table1[#Data],MATCH([@Reservation],LOSNAintoActualLOS.xlsm!Table1[Reservation],0),7)" .Value = .Value End If End With Next r End Sub