具有动态列的Vlookup VBA循环

时间:2017-08-18 09:12:23

标签: excel vba excel-vba

对于一个小项目,我想在VBA中使用vlookup或匹配来从另一个工作表中获取数据。即使在google的帮助下我发现这也是一项艰巨的任务我无法找到解决方案。

我将项目分为三个阶段:

  • 第一阶段是在VBA中创建一个有效的Vlookup(无法让它工作)
  • 搜索需要执行的范围(动态)(我认为我管理)
  • 遍历表格中的所有单元格(完全停留在"对于每个"语句)

我设法获取动态范围#Firstcell和#Lastcell

但是我真的陷入了循环和vlookup。 我想以这样的方式创建vlookup:对于每个单元格,X将是A& rownumber和Y将是Columnletter& " 4&#34 ;. vlookup需要从Firstcell执行到Lastcell。

Sub Match_Values()
' Variables

Dim X As Integer
Dim Y As Integer
Dim Firstcell As Integer
Dim Lastcell As Integer

' Range determination
    With ActiveSheet
        Range("A3").Select
        Selection.End(xlToRight).Select
        Firstcell = ActiveCell.Offset(1, 1).Range("A1").Select
    End With

    With ActiveSheet
        Lastcell = ActiveCell.SpecialCells(xlLastCell).Select
    End With

' For each cell create a vlookup with on rowindex en on y the columnindex loop statement


' Vlookup
With WorksheetFunction
    c04 = .VLookup(X, [Pivot!A4:CC99], .Match(Y, [Sheet1!A4:CC4], 0), False)
End With
MsgBox c04

End Sub

在此先感谢,如果我需要提供更多反馈,请告知我们。

编辑,感谢您的反馈 我上传了示例文件:https://ufile.io/48evu (我很遗憾没有看到如何在stackoverflow中披露)

图片1 enter image description here

图片2 enter image description here

1 个答案:

答案 0 :(得分:0)

我找到了一种使我的脚本有效的方法。

我同意Peh的观点,我应该更多地关注VBA,但它确实有效。 也许这对尝试类似事情的人有用,并且可以回答问题。

感谢您的支持!

Private Sub Match_Values()
' Variables
Dim Firstcell As String
Dim Lastcell As String
Dim sht As Worksheet

' Range determination
    With ActiveSheet
        Range("A3").Select
        Selection.End(xlToRight).Select
        ActiveCell.Offset(1, 1).Range("A1").Select
        Firstcell = ActiveCell.Address
    End With

    With ActiveSheet
        ActiveCell.SpecialCells(xlLastCell).Select
        Lastcell = ActiveCell.Address
    End With

Dim rng As Range: Set rng = Application.Range("Overview!" & Firstcell & ":" & Lastcell)
Dim cel As Range
For Each cel In rng.Cells

    cel.FormulaR1C1 = _
        "=IFERROR(VLOOKUP(RC1,Pivot!R4C1:R100C50,MATCH(Overview!R2C,Pivot!R4C1:R4C50,0),FALSE),""Error"")"
Next cel

End Sub

问候!