【问题标题】:How to copy specific cells from one sheet to another meting if criteria如果标准,如何将特定单元格从一张纸复制到另一张会议
【发布时间】:2019-02-14 16:49:15
【问题描述】:

我是 VBA 的新手。

我想根据条件将特定单元格从一张纸复制到另一张纸。 例如,如果在 H2:H1000 value = "Yes" 的范围内,则将 A、B、C 和 D 列中的单元格从符合条件的同一行复制到另一张工作表。

我的代码只是我设法做的一个草稿,我不知道如何从符合条件的同一行中选择单元格。

Sub FindandCopy()

    Dim rngA As Range
    Dim cell As Range


    Set rngA = Sheets("OFCE").Range("H2:H1000")
    For Each cell In rngA
        If cell.Value = "Yes" Then
            cell.EntireRow.Copy
            Sheets("Dashboard").Range("I2").End(xlDown).Select
            ActiveSheet.Paste
        End If
    Next cell

End Sub

【问题讨论】:

  • 不要认为您需要 VBA。您可以使用公式来实现这一点。首先,查看VLookUp 并从那里扩展
  • 你的代码有什么问题?你得到哪个错误,在哪里? • 我猜这是因为您复制了EntireRow 并尝试将其粘贴到I 列中,但整行不适合I 列之后,它仅适合您将其粘贴到A 列中,因为列的数量是有限的。
  • 看看AutoFilter和SpecialCells(xlCellTypeVisible)方法
  • Zac a Vlookup 无法正常工作,因为标准列在右侧...
  • PeH 这就是问题所在,其他方法都可以

标签: excel vba


【解决方案1】:

您可能想尝试使用 v-lookup 或简单的 sumif 函数。您可以在 vba 之外、在工作表本身中执行此操作,也可以将其编程到现有宏中。

【讨论】:

  • 即使我的列标准位于我要查找的右侧?
【解决方案2】:

网上有很多关于这个的材料,所以你应该能够解决它。

我使用了偏移量(从 H 到 A)和调整大小(将 A 扩展到 A-D),然后复制到另一张纸上 I 的第一个未使用的行。

你不需要选择/激活,实际上是discouraged。

Sub FindandCopy()

Dim rngA As Range
Dim cell As Range

Set rngA = Sheets("OFCE").Range("H2:H1000")

For Each cell In rngA
    If cell.Value = "Yes" Then
        cell.Offset(, -7).Resize(, 4).Value.Copy _
             Sheets("Dashboard").Range("I" & Rows.Count).End(xlUp)(2)
    End If
Next cell

End Sub

但是,您应该考虑使用 AutoFilter 或 Find 来执行此操作,而不是循环,因为它们更有效。

【讨论】:

  • 非常感谢 SJR,我明天在办公室试试这个。还将对 AutoFilter 或 Find 进行一些研究
猜你喜欢
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多