2017-08-21 47 views
0

我已经在宏中转换了Vlookup公式,以避免用公式内容填充单元格。下面的代码只有一个表曾与固定数量:使用VLookup宏从设置的数字范围中返回文本值

Sub NumberVLookup() 

Dim num As Long 
num = 4 

Set shData = Sheet2 
Dim sRes As Variant 
sRes = Application.VLookup(_ 
       num, shData.Range("A1:B6"), 2, True) 

Debug.Print sRes 
Sheet2.Range("C4") = sRes 
End Sub 

相反,我想创建一个可以给我更多的灵活性,它通过使用VLOOKUP函数返回它的文本值的方式 代码。 例如,我想包括在之间的范围内的所有数字:0-9 返回文本值红色 10-15返回文本值黄色 16-20返回文本值绿色

表到我指为以下内容:

 A   B  
1 0-9  Red 
2 10-15  Yellow 
3 16-20  Green 

例如,如果值为4,则VLookup宏将返回文本值“Red”。 我希望这个问题足够清楚。非常感谢

+1

如果您在A列中使用值0,10和15,那么您的vlookup会自动填充缺失的部分。 – nutsch

+0

@nutsch - D'oh!这很聪明,我以前没有想到。我总是做一个(现在看似不必要的)范围表。 – BruceWayne

回答

0

您可以使用范围和非完全匹配。

将数据设置为三列,范围在左侧按升序排列。

然后使用

=VLOOKUP(A7,$A$2:$C$4,3,TRUE) 

假设你的数据是这样的:

enter image description here

所以对于VBA(根据需要调整):

Application.VLookup(num, shData.Range("$A$2:$C$4"), 3, True) 

编辑:或者你可以只要按照@ nutsch的伟大建议!

0
Sub NumberVLookup() 

Dim num As Long 
num = 16 


Dim sRes As Variant 
sRes = Application.VLookup(_ 
      num, Sheet2.Range("A56:B58"), 2, True) 

Debug.Print sRes 
Sheet2.Range("J15") = sRes 
End Sub 
+0

感谢你们所有人。代码现在完美运行! – Tom