【问题标题】:using vlookup with if statement使用带有 if 语句的 vlookup
【发布时间】:2018-01-07 07:19:40
【问题描述】:

我有两张纸,第一张为“BW”,第二张为“EP”。

我将 sheet1(L 列)中的 ID 与 sheet2 中的 ID 进行比较。如果 ID 匹配,那么我将表 2 的 G 列的日期复制到 AA 列中的表 1。

我有代码,一直在工作。

我想在这里有一个 IF 语句。

如果 sheet2 的 E 列已确认 G70,则查找 ID 并将 sheet2 的日期复制到 sheet1。

我尝试了以下 IF 语句并得到了

如果 Cells(i, 5).Value = "G70 Confirmed" Then

应用程序定义错误。

谁能帮我摆脱这个并满足要求

Sub lookup()
Dim TotalRows As Long, totalrowsSht2 As Long
Dim ws As Worksheet
TotalRows = Sheets("BW").Cells(Rows.Count, "A").End(xlUp).Row
totalrowsSht2 = Sheets("BW").Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, 5).Value = "G70 Confirmed" Then
Sheets("BW_PSW").Range("AA5:AA" & TotalRows).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("BW").Range("L5:L" & totalrowsSht2), Sheets("eP").Range("$A:$L"), 7, 0), "")
End If
End Sub

【问题讨论】:

  • 您应该学习如何使用 F8 单步执行您的代码 - 然后您会看到您没有将 i 的值设置为为零。
  • 然后我会设置一个 for 循环 I = 5 to totalrows ?
  • 如果这就是您想要做的,是的,那会奏效。您还应该在处理多个工作表时添​​加对 If 行的工作表引用。

标签: vba excel


【解决方案1】:

我看到您的代码中有以下内容:

TotalRows = Sheets("BW").Cells(Rows.Count, "A").End(xlUp).Row
totalrowsSht2 = Sheets("BW").Cells(Rows.Count, "A").End(xlUp).Row

工作表 2 的总行数不应该是“EP”而不是“BW”吗?

totalrowsSht2 = Sheets("EP").Cells(Rows.Count, "A").End(xlUp).Row

我可能会使用“查找”而不是 vlookup,并循环浏览两张表, 但这只是我的偏好。

【讨论】:

    【解决方案2】:

    您的代码令人困惑:

    您需要明确“EP”、“BW”和“BW_PSW”是哪些工作表。

    这就是你想要完成的……

    从第五行到最后一行的每一行。

    如果工作表 2 列“E”的值为“G70 Confirmed”,并且工作表 1 列“L”中的值等于工作表 2 列中的值(无论“ID”列在哪一列)。

    然后

    将工作表 2 列“G”中的日期复制到工作表 1 列“AA”

    如果这是正确的,您需要一个带有 If/And 语句的 For 循环。

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      相关资源
      最近更新 更多