使用VLookup宏从设定的数字范围

时间:2017-08-21 21:59:35

标签: excel vba excel-vba

我已经在宏中转换了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宏将返回文本值"红色"。 我希望这个问题足够明确。非常感谢

2 个答案:

答案 0 :(得分: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的好建议!

答案 1 :(得分: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