多个匹配值Excel函数

js5cn81o  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(124)

我正在开发这个Excel VBA函数来根据我在(M3:M4176)中设置的ID打印不同的VLookup值,这样重复的值会显示不同的VLookup结果。我创建了下面的函数来查找和打印这些值。

Sub Main()
Range("H5").Select
Cells(1, 1).Select 'Seleciona o Valor da célula atual
ActiveCell.Offset(2, 0).Select 'Altera a posição da Célula 2 Células para a esquerda
ActiveCell.Offset(0, 2).Select 'Altera a posição da Célula 2 Células para baixo
Dim var As Integer
Dim result As Variant
For var = 1 To Range("H5").Value
    ActiveCell.Offset(1, 0).Select
    result = Application.VLookup(Range("A5") & Range("M3:M4176").Row, Range("M3:Q41765"), False)
    ActiveCell.Value = result
Next var
End Sub

在pure excel中,我用来生成和测试不同结果的vlookup可以工作,但是当应用到VBA时,结果会被打印出来,但是会显示为#Value。这样做是不是根本不可能?我感觉离结果很近,但是我迷失了,因为我现在才开始学习VBA,通过构建这个。下面是在单元格中工作的excel函数

=IFERROR(VLOOKUP(P3&ROW(M3:M4176);M3:Q4176;5;FALSE);"")
ljsrvy3e

ljsrvy3e1#

我仍然不确定你想从代码中得到什么,但是这里有一个基本的例子,说明了如何在VBA中使用VLookup,遍历一个范围。

Sub MyLookup()
    
    Dim RG As Range     'The whole range we're placing values into
    Dim CL As Range     'Individual cells in RG
    Dim I As Long       'Iteration
    Dim lRow As Long    'Last Row
    
    lRow = Range("M" & Rows.Count).End(xlUp).Row    'Lookup last row in M column
    Set RG = Range("C4:C" & lRow)                   'Set Range
    
    For Each CL In RG.Cells     'Iterate through Range
        'the Value of each cell (CL) in this range (RG) = WSfunction: VLookup ( _
            look for ( value -> offset from Col C to col A), _
            look in ( M column to Q column, fro row 4 to lastrow), _
            Return ( 5th column), _
            False)
        CL.Value = Application.WorksheetFunction.VLookup( _
            CL.Offset(0, -2).Value, _
            Range("M4:Q" & lRow), _
            5, _
            False)
    Next CL
    
End Sub

这是输出:

相关问题