尝试将 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 宏的主要内容,如果未能解决你的问题,请参考以下文章

尝试将片段添加到我的片段容器 FrameLayout

将 VLookup 公式设置为 excel 单元格

如何将工具提示/下拉菜单/弹出窗口添加到 UDF/用户定义的 Excel 2010 函数?

excel vlookup里面countif标准

使用 vlookup microsoft excel 转换数字

Outlook 表单:从 Excel 导入/VLOOKUP 数据?