2013-06-18 68 views
-1

我有兩列數據,A和B.我想在列B中查找空白單元格,然後從列A中的相應單元格複製數據(如果A也不爲空)。宏查找空白單元格並替換

+1

如果您將空白單元格從'A'複製到'B'中的空白單元格,是否真的存在任何問題? – user2140261

+0

不 - 我只是不想覆蓋B中的內容,如果它已經存在 – user2497437

回答

0

我會使用SpecialCells:

Sub fillblanks() 
Dim rngBlanks As Range 
Dim rng As Range 
Dim cl As Range 

Set rng = ActiveSheet.UsedRange.Columns(2) 
Set rngBlanks = rng.SpecialCells(xlCellTypeBlanks) 
For Each cl In rngBlanks.Cells 
    With cl 
     If (.Value = "") And (.Offset(0, -1).Value <> "") Then 
      .Value = .Offset(0, -1).Value 
     End If 
    End With 
Next 

End Sub 
+1

有趣的是,玩我的答案與你的答案,我想我也會檢查你的代碼也通過刪除線檢查偏移量的空白,這實際上減緩了近33%的潛力。有意義,因爲檢查是否比對單元格的修改快得多。但我沒有意識到它會減緩33%。不知道你是否知道在你寫它時它會更快,或者你只是遵循Askers指南,但我覺得它很有趣。如果您有興趣玩這個工作簿,我會上傳示例工作簿。 – user2140261

+0

我已預先上傳示例工作簿[Here](http://www.mediafire.com/download/b8sxpkgvsizak60/Book1.xlsm)。 – user2140261

+0

我只是遵循指導方針,甚至沒有考慮性能,但它確實有意義 - 對工作表對象的任何更改都非常耗時。 –

1
Sub Sample2() 

On Error Resume Next 

With Columns("B").SpecialCells(xlCellTypeBlanks) 
    .FormulaR1C1 = "=RC[-1]" 
    .Value = .Value 
End With 

End Sub 

你問,好像不跳過空白單元格,如果在一個單元格是空白的,這是因爲我這次失敗並沒有做完全看看爲什麼用另一個空白替換和空白將是一個問題。如果是這樣,通過簡單地修改.FormulaR1C1 = "=RC[-1]"來考慮空白是非常簡單的。

1

不需要VBA。選擇ColumnB,HOME>編輯,查找&選擇,轉至特殊...,選擇空白(只),

= 

按Ctrl +輸入