1

我有以下 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
4

2 回答 2

1

您没有将范围“区域”设置为等于任何值,因此此行将无法正确显示您的答案:

area.Cells(i, 2).Value = found

更改area.Cells(i,2).valuesheets("Sheet2").Cells(i,2).value您希望显示答案的位置或任何位置。或者,如果您想使用area.cells.

于 2013-10-06T11:34:47.850 回答
1

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

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

假设您的工作表如下所示

在此处输入图像描述

逻辑

  1. 找到 Col B 的最后一行
  2. 一次性插入Vlookup公式F1:F & LastRow
  3. 将它们转换为值。

代码

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

结果:

在此处输入图像描述

于 2013-10-06T13:19:00.727 回答