2017-07-27 152 views
2

我的数据来自不同来源,通过获取数据/连接进入名为RawData的表/表格。我创建了一个链接到按钮的宏,用户必须单击以使用索引/匹配函数填充RawData中的一些数据,该索引/匹配函数指向另一个工作簿,其中RawData的预订号与其他工作簿匹配以确定留。使用VBA用公式替换零星的#N/A单元格

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

这个新数据可以放在我的主工作簿中,但是我现在已经在它自己的工作簿(LOSNAintoActualLOS.xlsm)中,因为我一直在进行这项工作的测试]。公式必须粘贴到表中,因为当表刷新时,通常具有停留时间长度的数据行将删除公式并将其替换为原始值(空白单元格)。

我需要的是我的代码循环遍历表的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中删除第一个句点,则会收到编译错误:无效的限定符。

+0

相关:[...发现在列坯料,然后填充在值...](https://stackoverflow.com/questions/43211793/need-to-make-a-macro -in-excel-that-finds-blanks-in-a-column-and-then-fills-in -t/43211921#43211921)将.SpecialCells(xlCellTypeBlanks)更改为.SpecialCells(xlCellTypeFormulas,xlErrors)。 – Jeeped

回答

4

IsErrorWorksheets("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 
+0

我刚在试纸上试过了,它工作正常。很高兴知道我非常接近。非常感谢! – Craig

+0

@ A.S.H。刚刚错过删除它,当我决定去与块 –