我有一些數據,看起來像這樣(在A1開始):Excel VBA - 如何搜索數組和返回值?
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列,並用相應的類型替換這些數據點。我認爲會有一個相對簡單的方法來實質上搜索「蝙蝠俠」的名稱(x,0),然後用名稱(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是蝙蝠俠,發現在索引那個位置,然後發現在同等回報第二個維度。 (對不起,由於缺乏語義,我不知道如何引用這個,所以請讓我知道,如果我可以澄清)。
是的!這真是太好了。完美的工作,並會幫助我與其他一些宏,我有一些令人費解的陣列使用。萬分感謝!! – BruceWayne