【问题标题】:Attempting copy paste cells from one sheet to another?尝试将单元格从一张纸复制粘贴到另一张纸上?
【发布时间】:2020-02-02 13:29:28
【问题描述】:

我正在尝试从名为“活动概述”的工作表中复制 B 列(仅填充单元格)并粘贴到第 11 行之后的 E 列中名为“V&VFile”的工作表中,但是当我运行宏时,单元格并没有被复制和似乎粘贴空白单元格。

数据源使用excel公式索引匹配,这是为什么它可以复制从excel公式中找到的数据?

Sub VVfileFILL()

Dim Lastrow As Double

Lastrow = Worksheets("Activity Overview").Cells(Rows.Count, "B").End(xlUp).Row

ThisWorkbook.Worksheets("Activity Overview").Range("B" & Lastrow).Copy

ThisWorkbook.Sheets("V&V").Range("E" & Rows.Count).End(xlUp).Offset(10, 0).PasteSpecial xlPasteValues

End Sub

【问题讨论】:

  • 您的复制行正在复制单个单元格"B" & Lastrow。
  • 我该如何改变这个
  • 那么您要复制的范围是什么,它是否包含公式,是否有您想错过的空白?如果是这样,空白也是公式的结果吗?截图会有所帮助。
  • 是的,它包含公式索引匹配以查找值。它在 B 列从第 2 行一直到第 62 行。但如果这个范围发生变化,我希望它们也被复制
  • 公式的结果是空白还是数字或空白还是文本?

标签: excel vba


【解决方案1】:

不要认为在这种情况下可以避免循环。

Sub VVfileFILL()

Dim Lastrow As Long, r As Long, n As Long

n = Worksheets("V&V").Range("E" & Rows.Count).End(xlUp).Offset(10, 0).Row

With Worksheets("Activity Overview")
    Lastrow = .Cells(Rows.Count, "B").End(xlUp).Row
    For r = 2 To Lastrow
        If Len(.Cells(r, "B")) > 0 Then 'check not blank
            If WorksheetFunction.CountIf(Worksheets("V&V").Range("E1:E" & n), .Cells(r, "B")) = 0 Then 'check not already in E
                Worksheets("V&V").Cells(n, "E").Value = .Cells(r, "B").Value 'transfer value
                n = n + 1 'add 1 to destination row
            End If
        End If
    Next r
End With

End Sub

【讨论】:

  • 它复制并粘贴正确的值,但将它们粘贴到第 157 行
  • 你需要调整目标行。您从最后一行偏移 10,因此您必须在第 147 行中有数据。如果您有固定的目标范围,那么只需从例如开始n=2 在第三行。
  • 谢谢工作,有没有办法检查列中是否已经存在该值,如果不插入,但是否跳到下一个
  • 我在上面添加了一行来检查。
  • 是的,我们到了!对不起,作为一个新手和努力工作!现在很好用,谢谢!非常感谢您的努力。
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2023-02-02
  • 1970-01-01
相关资源
最近更新 更多