向下填充直到最后一个空行或下一个填充单元格
Fill Down until Last Empty Row or Next Filled Cell
我知道如何编写代码来填充列,但我有几个条件不知道如何实现。
我想填写到最后一行(包含任何值)或列中包含信息的下一个单元格。
数据是这样的
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'
没有代码很难说,但假设你正在做一个循环,那么你需要做的就是检查单元格
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
如果使用您的示例数据集(将现有值填充到 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
我知道如何编写代码来填充列,但我有几个条件不知道如何实现。
我想填写到最后一行(包含任何值)或列中包含信息的下一个单元格。
数据是这样的
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'
没有代码很难说,但假设你正在做一个循环,那么你需要做的就是检查单元格
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
如果使用您的示例数据集(将现有值填充到 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