VBA实现excel数据-拆分到表(优化版)

本文介绍了一种使用VBA进行Excel表拆分的优化方法,通过先清空非主表并按列值(表名)拆分,避免了数据重复。详细展示了如何用VBA代码实现这一过程,包括新建工作表、复制表头和数据等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sub 表拆分优化版() '先清空非主表,再拆分,防止拆分后数据重复
    
    Dim imaxRow As Integer, ssName As String, sht As Object, n As Integer, x As Integer
    Application.DisplayAlerts = False
    
    For x = Worksheets.Count To 1 Step -1
        If Worksheets(x).Name = "数据" Then Exit For  '遇到worksheets("数据")就停止
        Worksheets(x).Delete
        
    Next
    
    Application.DisplayAlerts = True
    
    imaxRow = Worksheets("数据").Range("A1").End(xlDown).Row '表的最大行
    
    
    For x = 2 To imaxRow
    
        ssName = Worksheets("数据").Range("C" & x).Value ' 获取列值,即表名
    
        On Error Resume Next '以下程序就算出错也继续运行
        
        Set sht = Worksheets(ssName)  '
        
        If Err.Number <> 0 Then  '判断表名不存在时, 0 代表存在
            '新建表
            Set sht = Worksheets.Add(, Worksheets("数据"))    '疑惑:②, 此时的表明与①表名并不同
            sht.Name = ssName
            '填写表头
            Worksheets(ssName).Range("A1").Resize(1, 8).Value = _
            Worksheets("数据").Range("A1").Resize(1, 8).Value
    
        End If
            '填数据
            n = sht.Range("A" & Rows.Count).End(xlUp).Row + 1  '获取当前worksheets的行数
            Worksheets(ssName).Range("A" & n).Resize(1, 8).Value = _
            Worksheets("数据").Range("A" & x).Resize(1, 8).Value
    
       Next
End Sub

 

转载于:https://www.cnblogs.com/joewancn/p/9643712.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值