2015-06-19 190 views
0

我知道如何編寫代碼以填充列,但我有一些條件,我無法找到如何實現。填充直到最後一個空行或下一個填充的單元格

我想填寫直到最後一行(包含任何值)或列中包含信息的下一個單元格。

的數據看起來像這樣

a  1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
b  1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
c  1 2 3 4 5 6 7 8 9 10 
d  1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
e  1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 
     1 2 3 4 5 6 7 8 9 10 

所以你可以看到,代碼需要知道如何停止在B(而不是在它複製)複製下來的列時。當代碼拖拽e時,代碼還需要在最後一行停止。

我一直在試圖找出它無濟於事,請幫助!

以前的代碼:

Yes I do have some code, but it is slow and I would like to figure out something more efficient. 
'Sub CopyDown() 
    Sheets("RAW").Range("A1").Select 
    For i = 1 To 100 
     ActiveCell.Copy 
     ActiveCell.Offset(1, 0).Select 
     If ActiveCell.Value = vbNullString Then 
      ActiveCell.Paste 
     End If 
    Next i 
End Sub' 
+0

您是否有一個您編寫的代碼不工作的示例? – USFBS

+0

是的,我將代碼鏈接到問題 –

回答

3

這一個很簡單,如果使用您的示例數據集(填寫列A中空白的現有值)。

Sub MacroFillAreas() 

    For Each area In Columns("A:A").SpecialCells(xlCellTypeBlanks) 
     If area.Cells.Row <= ActiveSheet.UsedRange.Rows.Count Then 
      area.Cells = Range(area.Address).Offset(-1, 0).Value 
     End If 
    Next area 

(代碼修改)

End Sub 
+0

現在檢查這個。這對我來說是新的! –

+0

所以唯一的問題是找到一種方法來阻止它在包含值的最後一行。否則,我喜歡這是如何工作的。它非常快。它仍然複製到最後一行 –

+0

當在上面複製您的示例數據所創建的數據集上運行時,它不會超出最後一行。無論如何,我認爲我可以修改代碼,使其不會超出最後一行。需要幾分鐘的時間... – tbur

1

沒有代碼很難說,但假設你正在做一個循環,那麼所有你需要做的是檢查電池

Sub filldown() 

Dim X, Y As Long 
Dim MaxX, MaxY As Long 

MaxX = ActiveSheet.UsedRange.Rows.Count 
MaxY = ActiveSheet.UsedRange.Columns.Count 

For X = 1 To MaxX 
    For Y = 1 To MaxY 
     If IsEmpty(ActiveSheet.Cells(X, Y)) = True Then 
      ''Do something 
     End If 
    Next 
Next 

End Sub 
+0

是的,我確實相信這是好的,但我沒有看到這將如何理解它已經到達最後一列。一個很大的問題是,我們正在做這個的第1列右邊的每一列都有可能是一個空單元格,或者是空的,所以如果我簡單地檢查單元格是否有值,可能不會觸及任何東西(如果這是有道理的) –

+0

@CodingNovice哦,我的印象是它只是列A ...所以你想要它在整個UsedRange上運行? –

+0

不完全。它只是A列,但問題在於代碼需要在傳遞行50或行100時停止複製。無論哪行都是最後一個被使用的行!上面的tbur給出了一個很好的代碼,但現在已經超出了我的 –

相關問題