填充直到最后一个空行或下一个填充的单元格

问题描述:

我知道如何编写代码以填充列,但我有一些条件,我无法找到如何实现。填充直到最后一个空行或下一个填充的单元格

我想填写直到最后一行(包含任何值)或列中包含信息的下一个单元格。

的数据看起来像这样

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

是的,我将代码链接到问题 –

这一个很简单,如果使用您的示例数据集(填写列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

没有代码很难说,但假设你正在做一个循环,那么所有你需要做的是检查电池

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给出了一个很好的代码,但现在已经超出了我的 –