繁体   English   中英

Excel中的SpecialCells返回公式的值

[英]SpecialCells in Excel to return value of a formula

我想要一种快速简单的方法来使用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将我的数据从工作表复制到另一个表中,请记住源单元格包含公式,并且该公式可能会产生空字符串单元格,因此需要跳过

如果您有公式,为什么要尝试选择常量?

用这个:

Worksheets("Source").Range("Z4:Z2000").SpecialCells(xlCellTypeFormulas, 23).Copy
Worksheets("Destination").Range("missing_qbc").pastespecial(xlPasteValues)

23表示“数字,文本,逻辑和错误”。

分别进行复制和粘贴,以确保跳过空白(如果这就是“忽略”的意思)。

粘贴值可确保仅粘贴值,而不确保公式本身。

请注意,如果单元格中有一个公式,则不能为空。 即使公式产生的结果为空字符串值,单元格本身也不为空! 在这种情况下,您需要先进行复制粘贴值,然后再执行其他操作-甚至Excel有时也不会将空白单元格视为空白。 在这种情况下,您需要遍历单元格(循环),并一一复制。

我能想到的最简单的方法是在全部复制后删除空白:

Set rngFrom = [Source!Z4:Z2000]
Set rngTo = [Destination!missing_qbc].Resize(rngFrom.Rows.Count, 1)
rngTo.Value = rngFrom.Value
rngTo.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp

比较复杂的方法是使用数组公式,但不需要VBA。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM