VBA依次拆分多张表的A列合并单元格并自动填充

VBA:多工作簿里的多个工作表里A列的合并单元格拆分并自动填充,然后把处理后的表全部复制粘贴在一张表上

以下是一个基本的VBA宏,可以帮助你完成这个任务。这个宏将会遍历当前工作簿中的所有工作表,对每个工作表的A列进行拆分和填充操作,然后将处理后的数据复制到一个新的工作表中。

Sub SplitAndCopy()
    Dim ws As Worksheet
    Dim destWs As Worksheet
    Dim lastRow As Long
    Dim lastRowDest As Long

    ' Create a new worksheet for the combined data
    Set destWs = ThisWorkbook.Sheets.Add
    destWs.Name = "CombinedData"
    
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> destWs.Name Then ' Exclude the destination worksheet
            ' Unmerge and fill cells in column A
            With ws.Range("A:A")
                .MergeCells = False
                .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
                .Value = .Value
            End With

            ' Copy data to the new worksheet
            lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
            lastRowDest = destWs.Cells(destWs.Rows.Count, "A").End(xlUp).Row + 1
            ws.Range("A1:A" & lastRow).Copy destWs.Range("A" & lastRowDest)
        End If
    Next ws
End Sub

这段代码首先创建一个名为"CombinedData"的新工作表,用于存放所有处理后的数据。然后,它会遍历当前工作簿中的每一个工作表。对于每个工作表,它会先取消A列的所有单元格合并,然后用上一个单元格的值填充所有空白单元格。最后,它会将处理后的A列数据复制到"CombinedData"工作表的末尾。

请注意,这段代码并没有考虑到合并单元格跨越的行数不同的情况,如果在你的工作表中存在这种情况,可能需要进一步调整这段代码来满足你的需求。在实际使用时,也请先在备份的工作簿上测试这段代码,以防止意外的数据丢失。