尝试将 Vlookup 片段添加到我的 Excel 宏
Posted
技术标签:
【中文标题】尝试将 Vlookup 片段添加到我的 Excel 宏【英文标题】:Trying to Add a Vlookup Piece to my Excel Macro 【发布时间】:2015-09-30 22:39:01 【问题描述】:我正在尝试将 Vlookup 片段添加到我正在处理的长宏中,以消除一些日常数据操作工作。
基本上每天我都会使用 vlookup 与前一天进行比较的四列新数据。四个新列位于 C-F 列中,旧数据位于 M-P 列中。我用列 G 中的公式在列 M 中查找列 D。
我遇到了一个问题,即如何灵活地设置宏每天使用的范围,因为我不想经常更改它。行数将在 10,000-30,000 之间波动。
这是我的代码 - 我可能认为这一切都错了。
Sub Lookup()
Dim i, LastRow
Set i = Sheets("data").Range("F5").End(xlUp)
If Cells(i, "F5").Value <> "" Then
Range(i, "G").Value = WorksheetFunction.VLookup(Cells(i, "D"), Range("N").End(xlDown), 1, False)
End If
End Sub
【问题讨论】:
在单元格中使用动态命名范围和常规 VLOOKUP 公式。或者使用VBA批量填写.FormulaR1C1
。
你想要达到什么样的灵活性?
在我看来,你把事情复杂化了:(1) 在任何单元格中输入你想要的 VLookup 公式。 (2) 进入 VBE 直接窗口并输入? Selection.FormulaR1C1
。 (3) 最后,输入你的代码Sheets("Data").Range("F1:F30000").FormulaR1C1 = "enter here the formula you got from step 2"
。还是我完全不在了?
【参考方案1】:
试一试
Sub Sheet2_Button1_Click()
Dim Rws As Long, rng As Range, Mrng As Range, x
Rws = Cells(Rows.Count, "D").End(xlUp).Row
Set rng = Range(Cells(1, "G"), Cells(Rws, "G"))
Set Mrng = Range("M1:M" & Rws)
rng = "=IFERROR(VLOOKUP(D1, " & Mrng.Address & ",1,0),""Nope"")"
'----------If you want it to be just values uncomment the below line--------------
' rng.Value=rng.Value
End Sub
【讨论】:
【参考方案2】:你有一些向后的范围引用。我无法与 vlookup 通话,但您可以先查看以下部分:
If Cells(i, "F5").Value <> "" Then
Range(i, "G").Value = WorksheetFunction.VLookup(Cells(i, "D"), Range("N").End(xlDown), 1, False)
End If
尝试将其更改为此以修复范围声明:
If Range("F" & i).Value <> "" Then
Range("G" & i).Value = WorksheetFunction.VLookup(Range("D" & i), Range("N").End(xlDown), 1, False)
End If
【讨论】:
以上是关于尝试将 Vlookup 片段添加到我的 Excel 宏的主要内容,如果未能解决你的问题,请参考以下文章
如何将工具提示/下拉菜单/弹出窗口添加到 UDF/用户定义的 Excel 2010 函数?