【发布时间】:2015-08-27 15:28:17
【问题描述】:
我有一些看起来像这样的数据(从 A1 开始):
Batman
Carl Reiner
Ford
Sushi
但我有一个二维数组,存储这些名称及其类型:
Dim Names()
ReDim Names(4,1)
Names(0,0) = "Batman"
Names(0,1) = "Superhero"
Names(1,0) = "Carl Reiner"
Names(1,1) = "Comedian"
Names(2,0) = "Ford"
Names(2,1) = "Car Manufacturer"
Names(3,0) = "Sushi"
Names(3,1) = "Food"
现在,我想遍历 A 列并将这些数据点替换为它们的等效类型。我认为有一种相对简单的方法可以从本质上搜索 Names(x,0) 中的“Batman”,然后将其替换为 Names(x,1)。最好的方法是什么?
我在某个地方找到了可以使用 Vlookup 的地方,所以我尝试了这个,但无济于事:
Evaluate(WorksheetFunction.Vlookup("A1",Names,1,False)
我的想法是它会寻找“蝙蝠侠”并返回“1”维度中名称中的值......但这一直给我一个错误(类型 13 不匹配)。
感谢您的任何想法/帮助!
编辑:我找到了this 的帖子,并且似乎正在使用Application.Match("A1",Application.Index(Names,0,1),0) 返回数组中“A1”的位置。现在我只需要返回偏移量并获得它的“1”位置...
编辑 2:我想我明白了。使用 MATCH 找到“A1”的位置,然后使用数组找到它:
Names(Application.Match("A1",Application.Index(Names,0,1),0),1)
所以,当 A1 是蝙蝠侠时,它在索引中找到那个位置,然后在第二维中找到等效的返回。 (对不起,缺乏语义,我不太清楚如何引用这个,所以如果我能澄清,请告诉我)。
【问题讨论】: