【发布时间】:2017-06-21 19:24:26
【问题描述】:
我有一个索引匹配函数,我试图将它保存为 VBA,以便我可以将它添加到多个工作簿中。我对其进行编码的方式一直给我相同的答案,并且不会循环到下一个单元格以查找不同的关键字。我希望它查看 N76 中的内容并将答案放入 O76 中,这有效,但对于 N77,它给出的答案与 O76 相同,即使 N77 中的关键字不同。
子契约()
Dim Covenant_1 As Integer
Dim Dashboard As Worksheet
Dim Covenant_Sheet As Worksheet
Dim Cov_Date As Range
Dim Cov_Dates As Range
Dim Cov_Type As Variant
Dim DB_Cov As Variant
Dim Cov_Type2 As Variant
Set Dashboard = Sheets("Dashboard")
Set Covenant_Sheet = Sheets("Covenants")
Set Cov_Date = Dashboard.Range("N74")
Set Cov_Dates = Covenant_Sheet.Range("B4:AB4")
Set Cov_Type = Covenant_Sheet.Range("B6:AB13")
Set DB_Cov = Dashboard.Range("L76:L80")
Set Cov_Type2 = Covenant_Sheet.Range("B6:B13")
For Each Cell In Dashboard.Range("N76:N80")
Cell.Value = Application.Index(Cov_Type, Application.Match(DB_Cov, Cov_Type2, 0), Application.Match(Cov_Date, Cov_Dates, 0))
Next
结束子
【问题讨论】:
-
试试这个网站并使用示例作为模型:deskbright.com/excel/using-index-match
-
我的 excel 中有正确的索引/匹配公式,我试图将其放入 VBA,以便我可以将宏添加到其他工作簿,而不必经历复制过程/粘贴格式等。
-
另外,请确保您的计算在代码中完成。在
end sub之前键入calculate以确保您的工作簿计算 -
一个问题是您在
DB_Cov上的MATCH()已修复进入您的循环。 -
每次计算后如何让 DB_Cov 移动。 IE。对于 O76 中的输出,我希望它基于 L76,但对于 O77,我希望 L77