簡體   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