Vba 如何将值从VLOOKUP返回到单元格中?

Vba 如何将值从VLOOKUP返回到单元格中?,vba,Vba,我有下面一段Vlookup的代码。该函数工作正常,但未在单元格中显示找到的值。但是,如果我使用了Msgbox函数,则会显示找到的值。问题是VLOOKUP结果不是在一个单元格中捕获的吗 Sub Example_of_Vlookup() Dim lookFor As Range Dim rng As Range Dim col As Integer Dim found As String Dim lastrowrange As Long Dim area As Range lastrowrange

我有下面一段Vlookup的代码。该函数工作正常,但未在单元格中显示找到的值。但是,如果我使用了Msgbox函数,则会显示找到的值。问题是VLOOKUP结果不是在一个单元格中捕获的吗

Sub Example_of_Vlookup()
Dim lookFor As Range
Dim rng As Range
Dim col As Integer
Dim found As String
Dim lastrowrange As Long
Dim area As Range
lastrowrange = [A65536].End(xlUp).Row
Set lookFor = Sheets("Sheet2").Range("b2")
Set rng = Sheets("Sheet2").Columns("t:u")
Set taxRange = Range("f2", Cells(lastrowrange, 22))
col = 2

On Error Resume Next
For i = 1 To lastrowrange
found = Application.VLookup("B2", "T1:U4", 2, True)
If IsError(found) Then
MsgBox lookFor & " not found"
Else

area.Cells(i, 2).Value = found
End If
Next i
On Error GoTo 0
End Sub
您没有将范围“面积”设置为任何值,因此此行无法正确显示您的答案:

area.Cells(i, 2).Value = found
area.Cells(i,2).value
更改为
sheets(“Sheet2”).Cells(i,2).value
或您希望答案显示的任何位置。或者,如果要使用
area.cells
,请将area设置为某物

想法很简单-我在B列中有国家名称。我的查找值是在S列(国家)和T列(地区)中,并在F列显示结果-25分钟前Sayanth Sasidharan

如果根据您的解释,我的理解是正确的,那么您不需要使用循环。让Excel来做脏活;)您将得到更少的代码

假设你的床单看起来像这样

逻辑

Option Explicit

Sub Example_of_Vlookup()
    Dim ws As Worksheet
    Dim lRow As Long

    Set ws = ThisWorkbook.Sheets("Sheet2")

    With ws
        lRow = .Range("B" & .Rows.Count).End(xlUp).Row

        '~~> =IF(ISERROR(VLOOKUP(B1,S:T,2,0)),"",VLOOKUP(B1,S:T,2,0))
        .Range("F1:F" & lRow).Formula = _
        "=IF(ISERROR(VLOOKUP(RC[-4],C[13]:C[14],2,0)),"""",VLOOKUP(RC[-4],C[13]:C[14],2,0))"

        .Range("F1:F" & lRow).Value = .Range("F1:F" & lRow).Value
    End With
End Sub
  • 找到B列的最后一行
  • F1:F&LastRow
    中一次性插入
    Vlookup
    公式
  • 将它们转换为值
  • 代码

    Option Explicit
    
    Sub Example_of_Vlookup()
        Dim ws As Worksheet
        Dim lRow As Long
    
        Set ws = ThisWorkbook.Sheets("Sheet2")
    
        With ws
            lRow = .Range("B" & .Rows.Count).End(xlUp).Row
    
            '~~> =IF(ISERROR(VLOOKUP(B1,S:T,2,0)),"",VLOOKUP(B1,S:T,2,0))
            .Range("F1:F" & lRow).Formula = _
            "=IF(ISERROR(VLOOKUP(RC[-4],C[13]:C[14],2,0)),"""",VLOOKUP(RC[-4],C[13]:C[14],2,0))"
    
            .Range("F1:F" & lRow).Value = .Range("F1:F" & lRow).Value
        End With
    End Sub
    
    结果:


    鸟瞰:如果您不打算使用
    lookFor
    rng
    taxRange
    ,那么您为什么要声明它?你不应该在
    应用程序中使用它们吗。VLookup
    我也无法理解你的代码。。。你想搜索什么?在哪里?如果你能添加一个快照或一个小的描述,那会有帮助…嗨,Sid,我最初使用的是那些变量。然而,对于一个试件,我使用了实际的细胞参考。想法很简单-我在B列中有国家名称。输入是拉出国家所属的区域-我的查找值在S列(国家)和T列(区域)中,并在FSid列中显示结果!那是准确的!对你的感激之情堆积如山!嗨,希德!再快一个!我还需要在U列下映射的子区域。我需要把它放在G列中。我使用了这样的东西-.Range(“G1:G”&lRow)。公式="”=IF(iError(iRor(VLOOKUP(RC[-5],C[14]:C[15],2,0)),“”,VLOOKUP(RC[-5],C[14]:C[15],2,0))。Range(“G1:G”&lRow).Value=.Range(“G1:G”和lRow).Value。在G栏中找不到结果。你能告诉我哪里出错了吗?