填写下一个空行或下一个填充单元格

时间:2015-06-19 19:32:59

标签: vba excel-vba copy autofill excel

我知道如何编写代码以填写专栏,但我有一些条件无法找到如何实施。

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

数据看起来像这样

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(而不是复制它)。此外,当向下拖动时,代码需要在最后一行停止并带有值。

我一直试图弄清楚无济于事,请帮忙!!!

上一个代码:

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'

2 个答案:

答案 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

答案 1 :(得分:1)

没有Code很难说,但假设你正在做一个循环,那么你需要做的就是检查单元格

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