【发布时间】:2014-11-14 12:10:27
【问题描述】:
我目前有一个包含大量行/列的评分表(产品名称在左侧,评分者在顶部,评分在此范围内的每个单元格中)。我正在尝试做的是在同一工作簿的另一张工作表上创建仅其中一些行和列的导出/快照。
我正在尝试找出最简单的方法来刷新此工作表上每个单元格中的分数,到目前为止,我已经使用索引/匹配。我想对其进行编码以使这个过程变得简单/自动化。理想情况下,我想匹配产品/列名称,以便我可以更改导出表上的订单、金额等。
我一直在尝试这段代码:
Sub KEY()
Dim Ratings As Range
Set Ratings = Worksheets("EXPORT").Range("B7:R33")
Dim iCell As Range
Worksheets("EXPORT").Activate
For Each iCell In ActiveSheet.Range("B7:R33")
iCell.Formula = Application.Index(Worksheets("Master Scores").Range(Cells.Find(iCell.Value).EntireColumn), Application.Match(Sheets("EXPORT").Range(Cells(iCell.Row, 1)), Sheets("Master Scores").Range("A1:A500")))
Next
End Sub
我得到“运行时错误'1004':应用程序定义的或对象定义的错误”
有人可以帮我解决这个问题吗?我以前从未尝试过使用代码来运行带有 VBA 的公式。我已经获得了一个常规的索引匹配来粘贴到每个单元格中,但想要保留我创建的“iCell”变量,以便在有意义的情况下按行/列名称引用。
如果有更好的方法来完成我想要完成的工作,请告诉我 - 我还没有找到。
【问题讨论】:
-
不用看太多,不是
Application.Index,而是Application.WorksheetFunction... -
忘了提-我之前将其设置为
Application.WorksheetFunction...,然后刚刚将其切换回尝试另一种方式。不过我会把它放回去 -
@JohnBustos - 允许删除
WorksheetFunction部分,并且可以更容易编码,因为您可以使用IsError()检查返回值,而在使用WorksheetFunction版本时遇到错误将引发运行时错误,然后必须对其进行处理。 -
不合格的范围对象。