[英]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.