【问题标题】:Copying a Row from a Table using a cell that contains a VLOOKUP equation使用包含 VLOOKUP 方程的单元格从表中复制行
【发布时间】:2017-08-16 23:53:40
【问题描述】:

我对 VBA 很不熟悉,而且我被这部分代码卡住了。我有一个带有 vlookup 方程的单元格,我想将其用作参数以在不同工作表上的表中查找值并将整行复制到不同工作表。我过去曾使用this code 根据单个参数复制数据,但我认为我遇到的问题是我试图引用的单元格中包含一个 vlookup 方程。

Sub Test()
For Each cell In Sheets(RawDataLoader).Range("E:E")
If cell.Value = "B8" Then
    matchRow = cell.Row
    Rows(matchRow & ":" & matchRow).Select
    Selection.Copy

    Sheets("Dashboard").Select
    ActiveSheet.Rows(matchRow).Select
    ActiveSheet.Paste
    Sheets("RawDataLoader").Select
End If
Next
End Sub

RawDataLoader 是我的表格的工作表

仪表板是我希望单元格所在的工作表

B8 是工作表仪表板上的单元格,我想将其用作表格查找的值。

我希望它搜索的值的范围是 E:E 和 RawDataLoader 表。

我知道我的代码的cell.value部分不正确,只是不知道如何引用单元格值,所以我把我想引用的单元格放了。

谢谢!

【问题讨论】:

  • 您想在 E 列中找到每个单元格,其中包含的值等于 B8 范围内的值,然后复制所有匹配的行,或者...?这对我来说并不完全清楚。
  • If cell.Value = "B8" Then 更改为 If cell.Value = range("B8").Value Then 对于初学者..

标签: vba excel


【解决方案1】:

您只需要使用Sheets("Dashboard").Range("B8").value 而不是"B8"。您还可以简化代码;避免使用Select 并且只在使用的范围而不是整个列上循环。

Sub Test()
  Dim cell as Range
  For Each cell In Intersect(Sheets("RawDataLoader").UsedRange, Sheets("RawDataLoader").Range("E:E"))
    If cell.Value = Sheets("Dashboard").Range("B8").value Then
      cell.EntireRow.copy Sheets("Dashboard").Rows(cell.Row)
    End If
  Next
End Sub

【讨论】:

  • 我刚试过这个,它给了我一个运行时错误,“脚本超出范围”
  • @Lampoa RawDataLoader 周围缺少双引号。再试一次编辑过的代码。顺便说一句,如果您使用 Option Explicit,这将更容易捕捉,这是始终推荐的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多