首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBA将零星的#N/A单元替换为公式

使用VBA将零星的#N/A单元替换为公式
EN

Stack Overflow用户
提问于 2017-07-28 04:56:15
回答 1查看 119关注 0票数 2

我通过Get Data/Connections将来自不同来源的数据放入名为RawData的工作表/表中。我已经创建了一个链接到按钮的宏,用户必须单击该按钮才能使用索引/匹配函数填充RawData中的某些数据,该函数指向另一个工作簿,在该工作簿中,来自RawData的预订编号与另一个工作簿相匹配,以确定停留时间。

出于不同的原因,我不会将上述工作簿附加到RawData表中。如果需要的话,我可以走那条路线,但我想在我们过那座桥之前,还有一条更容易的路线。我的问题是,一旦宏运行,其他工作簿有时可能没有预订数据。在这些情况下,我必须手动确定这些数据。

这些新数据可以放在我的主工作簿中,但我目前将它放在它自己的工作簿(LOSNAintoActualLOS.xlsm)中,因为我一直在运行测试使其工作。公式必须粘贴到表中,因为当表刷新时,通常具有停留时间的数据行会删除公式,并将其替换为其原始值,即空白单元格。

我需要的是让我的代码遍历表格的F列中的所有单元格,确定具有#N/A错误的单元格,然后在错误单元格中粘贴一个公式。我做了一些研究,但似乎找不到适合我需要的东西。我尝试过这样做,但由于我对VBA编程还很陌生,这绝对不是我的强项。

代码语言:javascript
运行
复制
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':Object不支持这个属性或方法。如果我从.IsError中删除第一个句点,我会得到编译错误:无效的限定符。

EN

Stack Overflow用户

回答已采纳

发布于 2017-07-28 05:00:59

IsError不是Worksheets("Sheet1").Range("F2:F" & LastRow)的一部分

像这样切换。

代码语言:javascript
运行
复制
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
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45360869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档