【发布时间】:2020-03-07 16:45:49
【问题描述】:
背景:
我有以下测试代码正在工作,其中 H 列等于 B 列与 D 列中的值
Range("H2:H17") = "=INDEX(D2:D17,MATCH(B2:B17,B2:B17,0))"
问题:
如何在代码中使用它来引用名为“temp”的单独工作表来执行相同的操作。这个想法是每次代码寻找“目标”时 一个索引和匹配检查列 B 等于 D 列中的内容,所以如果值 A 通过,那么它将成为 Test1?
我尝试了以下代码,但目标未更新为任何值。
将目标变暗
With Application
Target = .Index(Sheets("Temp").Range("D2:D17"), .Match(Sheets("Temp").Range("B2:B17"), Sheets("Temp").Range("B2:B17"), 0))
End With
调试显示以下目标
感谢任何帮助!
【问题讨论】:
-
Application.WorksheetFunction.Match. -
Match是WorksheetFunction就像Index一样,需要以同样的方式进行限定;Sheets正在从当前处于活动状态的任何工作簿中提取工作表(包括Chart工作表)。更喜欢将您正在使用的工作表拉到Worksheet变量中,这样您就不需要每次需要从该工作表中获取一个范围时都重新获取对象引用(并将它们从Worksheets集合中拉出;- ) -
@BigBen 情节扭曲:早期绑定版本不采用数组(/范围)作为查找值!