【问题标题】:using Lookup in VBA,Excel在 VBA、Excel 中使用查找
【发布时间】:2017-06-26 09:25:53
【问题描述】:

我有两张 Sheets , sheet1 和 sheet2 。

Sheet1 有 27 列,sheet2 有 10 列,

我正在寻找工作表 1 的 J 列中的 Id 并需要工作表 2 的 g 列中的相应日期。

我需要在表 1 AA 列中打印相应的日期。

我正在使用以下 belo VBA,它正在打印 G 列的第 2 表的 D 列。

这是公式,

=IFERROR(VLOOKUP(j2;sheet2!$A:$L;7;0);"")

我不想使用,录制宏功能。请帮我更正代码。

 Sub lookup()

Dim totalrows As Long
Dim totalcolumn As Long
Dim rng As Range
Dim rng1 As Range
Dim i As Long

totalrows = ActiveSheet.UsedRange.Rows.Count

For i = 2 To totalrows

Sheets("Sheet1").Select

Set rng = Sheets("Sheet2").UsedRange.Find(Cells(i, 10).Value)

If Not rng Is Nothing Then

Cells(i, 27).Value = rng.Value

End If

Next i

End Sub

【问题讨论】:

  • rng.offset(0,x) 也许?
  • 为什么是 rng.Offset?我需要 g 列中的日期。如果我需要一些其他数据,我想,我可以使用 Offset。
  • @Nathan_Sav 我仍然不确定,如果它是从 D 列粘贴相应的数据。在这种情况下,我想我在代码中遗漏了一些关键点。
  • 尝试将您的查找限制在您正在查看的列Sheets("Sheet2").columns("G").find,然后使用偏移量,如果需要,它可以以这种方式存在于工作表中的任何位置。
  • 我该怎么做?抱歉,对于直接问题,我是 vba 的新手

标签: vba excel


【解决方案1】:

您可以使用 FOR 循环代替:

Sheets("Sheet1").Range("AA2:AA" & totalrows).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("Sheet1").Range("J2:J15"), Sheets("Sheet2").Range("$A:$L"), 7, 0), "")

编辑:_______________________________________________________________

Sub lookup()
    Dim totalrows As Long, totalrowsSht2 As Long
    totalrows = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
    totalrowsSht2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
    Sheets("Sheet1").Range("AA2:AA" & totalrows).Formula = Application.WorksheetFunction.IfError(Application.VLookup(Sheets("Sheet1").Range("J2:J" & totalrowsSht2), Sheets("Sheet2").Range("$A:$L"), 7, 0), "")
End Sub

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多