自动填充宏,列中包含合并单元格时出错

时间:2013-12-11 02:18:50

标签: excel excel-vba autofill vba

我有以下代码:它运行良好,但当列合并单元格时,结果却是错误的。如果有任何方法可以避免对合并单元格进行计数或更具体 - 只计算B列中仅包含7个字符的数据:

Sub Second()
Range("B15:I15").Select
Selection.AutoFill Destination:=Range("B15:I" & Range("B" & Rows.Count).End(xlUp).Row)
End Sub'

1 个答案:

答案 0 :(得分:1)

如果合并的单元格总是在最后一行,那么很容易。您需要做的就是使用.MergeArea.Count检查最后一个单元格是否合并。

enter image description here

这是你在尝试的吗?

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim Lrow As Long

    Set ws = ThisWorkbook.Sheets("Sheet2")

    With ws
        Lrow = .Range("B" & .Rows.Count).End(xlUp).Row

        If .Range("B" & Lrow).MergeArea.Count > 1 Then
            Lrow = Lrow - 1
        End If

        .Range("C15:I15").AutoFill Destination:=.Range("C15:I" & Lrow)
    End With
End Sub

enter image description here

如果您想忽略合并单元格上方的空白单元格,则可以使用此

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim Lrow As Long

    Set ws = ThisWorkbook.Sheets("Sheet2")

    With ws
        Lrow = .Range("B" & .Rows.Count).End(xlUp).Row

        If .Range("B" & Lrow).MergeArea.Count > 1 Then
            If Len(Trim(.Range("B" & Lrow - 1))) = 0 Then
                Lrow = .Range("B" & Lrow).End(xlUp).Row
            Else
                Lrow = Lrow - 1
            End If
        End If

        .Range("C15:I15").AutoFill Destination:=.Range("C15:I" & Lrow)
    End With
End Sub

enter image description here