填充直到最后一个空行或下一个填充的单元格
我知道如何编写代码以填充列,但我有一些条件,我无法找到如何实现。填充直到最后一个空行或下一个填充的单元格
我想填写直到最后一行(包含任何值)或列中包含信息的下一个单元格。
的数据看起来像这样
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'
这一个很简单,如果使用您的示例数据集(填写列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
现在检查这个。这对我来说是新的! –
所以唯一的问题是找到一种方法来阻止它在包含值的最后一行。否则,我喜欢这是如何工作的。它非常快。它仍然复制到最后一行 –
当在上面复制您的示例数据所创建的数据集上运行时,它不会超出最后一行。无论如何,我认为我可以修改代码,使其不会超出最后一行。需要几分钟的时间... – 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
是的,我确实相信这是好的,但我没有看到这将如何理解它已经到达最后一列。一个很大的问题是,我们正在做这个的第1列右边的每一列都有可能是一个空单元格,或者是空的,所以如果我简单地检查单元格是否有值,可能不会触及任何东西(如果这是有道理的) –
@CodingNovice哦,我的印象是它只是列A ...所以你想要它在整个UsedRange上运行? –
不完全。它只是A列,但问题在于代码需要在传递行50或行100时停止复制。无论哪行都是最后一个被使用的行!上面的tbur给出了一个很好的代码,但现在已经超出了我的 –
您是否有一个您编写的代码不工作的示例? – USFBS
是的,我将代码链接到问题 –