簡體   English   中英

VBA - 替換空白單元格

[英]VBA - Replace blank cells

我必須用 DN 列中同一行中的數據替換 BM 列中的每個空白單元格。 我寫過:

Columns("BM:BM").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "=DN2"

但是“=DN2”在每個單元格中都以“=@'DN2'”結尾。 這會導致錯誤。 有人知道如何從同一行中獲取 DN 中的單元格嗎?

非常感謝您提前!

如果你要去R1C1然后制作公式R1C1

If Application.CountA(ActiveSheet.Range("BM:BM"))<> ActiveSheet.Rows.Count Then
    ActiveSheet.Range("BM:BM").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC118"
End If

另一種方法來做到這一點

Dim rng As Range

On Error Resume Next
Set rng = Columns("BM:BM").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If Not rng Is Nothing Then
    rng.Formula = "=DN" & rng.Row
End If

順便說一句,如果您使用的是SpecialCells ,請使用錯誤處理,否則您的代碼在找不到這些單元格時會崩潰

這是我的兩分錢。 我會放棄在整個列上使用SpecialCells的想法。 如果您想使用SpecialCells那么至少首先在BM列中創建一個Range以使用它。 如果任何列超過感興趣的行,您最終會在您真正不想要的地方得到值(在您的情況下為公式)。

這是一個跨越A1:C5的小例子:

在此處輸入圖片說明

我們感興趣的區域是列B:B ,如果為空,我們需要列C:C的值

當我們使用SpecialCells運行代碼時,例如:

Columns("B:B").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC3"

我們最終會得到:

在此處輸入圖片說明

我們看到的是, SpecialCells使用了UsedRange (正如@Peh 在評論部分正確提到的那樣),因此在這樣使用時非常不可靠。 存在以您不想要的值/公式結束的風險。 我建議使用C:C列(或在您的情況下為DN )中最后使用的行並從那里開始。 所以已經很省錢了:

.Range("BM1:BM" & <LastUsedRowOfDN>).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC118"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM