【问题标题】:Paste using array ignore blank cells使用数组粘贴忽略空白单元格
【发布时间】:2014-08-19 13:06:50
【问题描述】:

感谢这个论坛上的一些人,我有这段代码可以在转置时将多个单元格从参考活动工作表复制到主工作表。我唯一的问题是有一个范围有空白单元格,我希望函数忽略这些。我曾尝试将specialpaste 函数与skipblanks=true 一起使用,但这无济于事。有什么建议?

Macro1()
Dim master As Worksheet, source As Worksheet, copyCols() As Variant, pasteCols() As Variant, i As Integer

Set master = Workbooks("Combined Spreadsheet.xlsx").Worksheets(1)
Set source = ActiveSheet
copyCols = Array("F", "H", "N", "R", "S")
pasteCols = Array("B", "L", "V", "AF", "AP")

For i = 0 To UBound(copyCols)
    source.Range(copyCols(i) & "4:" & copyCols(i) & 14).Copy
    master.Range(pasteCols(i) & master.Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=True, Transpose:=True
    Next i
End Sub

【问题讨论】:

  • 快速谷歌搜索“PasteSpecial Skipblanks failed”显示空白单元格未粘贴(例如参见this)。这意味着,如果目标范围内的内容本来会被空白单元格覆盖,Skipblanks 会保持原样。您想消除(删除)原点范围的空白单元格吗?
  • @Ioannis 好问题……或者跳过目的地中的空白?

标签: arrays vba excel


【解决方案1】:

通过选择具有类型常量的 SpecialCells 来选择非空白单元格,然后粘贴结果,这将只超过选定的单元格。

试试下面的代码。

copyCols = Array("D", "E")
pasteCols = Array("H", "I")

For i = 0 To UBound(copyCols)
    Range(copyCols(i) & "4:" & copyCols(i) & 14).SpecialCells(xlCellTypeConstants, 23).Copy
    Range(pasteCols(i) & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlAll,     Operation:=xlNone, SkipBlanks:=True, Transpose:=True
Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多