【问题标题】:VLookup adding another column to the searchVLookup 向搜索中添加另一列
【发布时间】:2014-07-16 13:29:14
【问题描述】:

我对 VBA 比较陌生,并且在使用 VLOOKUP 代码时遇到了问题。

我有 3 张纸。 Sheet2(供应商)包含零件编号和供应商,Sheet 3(成本)包含零件编号和成本。 Sheet1(零件编号)包含一个标准零件编号列表。 Sheets2 和 Sheets 3 中的数据会定期更新。我希望 VBA 在供应商列表 (Sheet2.ColumnA) 中查找部件号 (Sheet1.ColumnA) 并将供应商名称 (Sheet2.ColumnC) 粘贴到 Sheet1.ColumnB 中。一旦我弄清楚如何做到这一点,我将修改代码以与成本类似并将其放入 Sheet1.ColumnC。

这是我目前所拥有的:

Sub Lookup()

Application.ScreenUpdating = False

Dim Lr As Integer

Lr = Worksheets("Part Numbers").Cells(Rows.Count, 1).End(xlUp).Row ' last row

For i = 1 To Lr ' last row

Worksheets("Part Numbers").Cells(i + 1, 2) = "=VLOOKUP(RC[-1],'Supplier'!A:C,3,0)"

  If i = "" Then Exit For

Next i

End Sub

当我执行此代码时,Sheet1.ColumnB 会填充(取自单元格 A)

"=VLOOKUP(A2,'Supplier'!A:B:B,3,0)" 

谁能告诉我为什么我输入 A:C 时显示 A:B:B?

【问题讨论】:

  • 您想对If i = "" Then Exit For 行做什么?似乎它永远不会做任何事情。条件永远不应该恢复。
  • 谢谢。我已经阅读了很多关于编码的提要,这可能是我在没有正确理解的情况下捡到的东西

标签: vba excel


【解决方案1】:

我的理解一直是,混合 R1C1 和 A1 符号是有风险的,并且可能会在 Excel 决定如何解释公式时产生意外和不受欢迎的结果。请尝试以下操作:

Worksheets("Part Numbers").Cells(i + 1, 2) = "=VLOOKUP(RC[-1],'Supplier'!C1:C3,3,0)"

或者:

Worksheets("Part Numbers").Cells(i + 1, 2) = "=VLOOKUP(A" & (i + 1) & ",'Supplier'!A:C,3,0)"

在这种特殊情况下,我可能会使用后一种方法,因为 C1:C3 乍一看有点令人困惑,它是 A1 还是 R1C1 表示法。如果您不总是根据 A 列查找,则可以通过小转换方法从列索引确定列字母。

【讨论】:

  • 感谢您的帮助。我还设法让它使用如下代码,“Worksheets("Part Numbers").Cells(i + 1, 2) = "=VLOOKUP(RC[-1],'Supplier'!C[-2 ]:C[1],3,0)" 正如您所看到的,它非常混乱和混乱。我已将其替换为您提供的那个,因为它更易于理解。再次感谢。
  • @Kel 作为记录,在您的等式中,如果您在公式位于 C 列时尝试将 A:C 转换为相对 R1C1,则需要 C[-2]:C NOT C [-2]:C[1] 转换为 A:D。在这种情况下,VLOOKUP 不在乎您是否添加了列,所以这并不重要。现在我建议您小心使用对其他工作表的相对引用。仅提及所有这些以供将来参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2017-07-22
相关资源
最近更新 更多