我想要一种快速简单的方法,使用Excel中的 SpecialCells
将单元格值复制到另一个工作表而不是循环
我的VBA代码如下:
Sub copyMissingData()
Worksheets("Source").Range("Z4:Z2000").SpecialCells(xlCellTypeConstants).Copy Worksheets("Destination").Range("missing_qbc")
End Sub
我的源数据 Z4:Z20000
具有返回值(文本/数字/分数等)或空白“”的公式 . 我希望副本忽略空白,但复制返回的任何其他值
由于源范围中的公式,上面使用 SpecialCells(xlCellTypeConstants)
的VBA代码不起作用 .
我的问题:有没有一种简单的方法我可以使用 range.specialcells
将我的数据从工作表复制到另一个,同时记住源单元格包含公式,公式可能会产生需要跳过的空字符串单元格
2 回答
如果您有公式,为什么要尝试选择常量?
用这个:
23表示“数字,文本,逻辑和错误” .
单独进行复制和粘贴可确保跳过空白(如果这是“忽略”的意思) .
粘贴值确保仅粘贴值,而不是公式本身 .
请注意,如果单元格中有公式,则不是空白 . 即使公式产生一个空字符串值,单元格本身也不是空的!在htat情况下,您需要在执行任何其他操作之前执行复制粘贴值 - 即使这样,Excel有时也不会将空白单元格视为空白 . 如果是这种情况,您需要迭代(循环)单元格,并逐个复制它们 .
我能想到的最简单的方法是在复制全部内容后删除空白:
更复杂的方法是使用数组公式,但不需要VBA .