对于一个小项目,我想在VBA中使用vlookup或匹配来从另一个工作表中获取数据。即使在google的帮助下我发现这也是一项艰巨的任务我无法找到解决方案。
我将项目分为三个阶段:
我设法获取动态范围#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中披露)
答案 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
问候!