我正在使用某种城市目录
处理Excel我有一个巨大的城市ID列表。我想设置一个vlookup,以便从他们的ID中获取城市名称......
我的活动表单示例:
Id Name
1 NY
2 LA
我正在寻找的例子(我目前只有Id):
Id New column
34001 Beijing
2078 Berlin
3459 ...
143
我实现了复制/粘贴单个值,但我显然需要一些帮助才能通过循环获取多个值。
任何帮助将不胜感激,谢谢
答案 0 :(得分:0)
如果你真的不能使用公式,请在数据范围内创建一个循环,并在查找范围内循环,就像vlookup公式一样。
附件中的示例,以便您可以根据需要进行更改:
Sub RangeLoop()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.ActiveSheet
Dim LKRng, DTRng As Range
Set DTRng = ws.Range("D3:D8")
Set LKRng = ws.Range("G3:G6")
Dim DTcl, LKcl As Variant
For Each DTcl In DTRng
For Each LKcl In LKRng
If LKcl = DTcl Then
LKcl.Offset(0, 1) = DTcl.Offset(0, 1)
End If
Next LKcl
Next DTcl
End Sub
<img src="https://i.stack.imgur.com/0mdNd.png" height="243" width="569">
答案 1 :(得分:0)
This article不仅会介绍您可以使用的方法,还会介绍每种方法的性能影响。在你的情况下,我认为匹配方法是最好的。
显然,您需要一个包含国家/地区名称的所有两个字母代码的数据集。
我经常使用匹配方法,以下是我在你的场景中如何做到这一点:
dim pos as variant
dim i as integer
dim ws as worksheet ' worksheet where you want to add new column
dim refsheet as worksheet ' sheet with country code and name
for i = 1 to 256 ' or whatever range you want to work with
'if a match is found, pos will be assigned the row number where the match was found.
on error resume next
pos = Match(ws.cells(i,2), refsheet.Range("A1:A100",0)
on error goto 0
if Not iserror(pos) then
ws.cells(i,3) = refsheet.cells(2,pos)
else
' action if a match was not found
endif
next i
希望有所帮助。