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

Excel 自动填充宏,列中有合并单元格时出错,excel,autofill,vba,Excel,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' 如果合并的单元格始终位于最后一行,则很容易。您

我有以下代码:它工作得很好,但当列被合并到单元格中时,结果是出错了。如果有任何方法可以避免对合并单元格进行计数,或者更具体地说,只对B列中仅包含7个字符的数据进行计数:

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

如果合并的单元格始终位于最后一行,则很容易。您只需使用
.MergeArea.Count
检查最后一个单元格是否合并

这就是你想要的吗

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

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

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

但是当列被合并到单元格中时,结果是错误的
为什么不正确处理错误以便代码不会中断
仅统计B列中仅包含7个字符的数据
我不确定是否理解。这与自动填充有什么关系?你能举例说明吗?我有一个标准格式的原始excel文件,每天我必须输入所有序列号(由boss提供),这些序列号必须在B列中仅包含7个字符(从单元格B15开始),从单元格C15到I15,有一个包含vlookup函数,我可以手动输入以查找序列号的详细信息。我希望复制列中所有序列号的所有公式。我可以手动选择所有带有公式的单元格,然后自动填充,但我希望创建一个宏来执行此操作,这样我可以更快地执行任务。合并的单元格将位于excel文件的底部,它是由其他人创建的,在保存文件并将其返回给上司时,我不会删除它,我可以在以后删除并重新添加它,但这会占用我一点时间,而且不符合节省时间的目的。希望你能理解我糟糕的英语。很抱歉,我是excel宏的新手,C-I有公式吗?合并的单元格可以在B列的任何位置?您所说的
是什么意思?合并的单元格将位于我的excel文件的底部
?列B的底部?底部有一个额外的行,有没有办法删除它?很好用,非常感谢,我还有一个标题问题(将符合特定条件的行复制到我的数据底部),介意看一下吗?