ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1732|回复: 2

按A列字段拆分工作表的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-15 09:21 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我的工作表有42033行  A-M栏,用下面的折分代码进行拆分不了,请教高手,该代码不适用我的工作表么
Sub 拆分工作表()
'
Dim zROW As Integer, zHS As Integer
Dim I As Integer, J As Integer
Dim zNAME As String
Dim mYcell As Range

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    zNAME = ActiveSheet.Name
    For I = Sheets.Count To 1 Step -1
        Sheets(I).Select
        If ActiveSheet.Name <> zNAME Then ActiveWindow.SelectedSheets.Delete
    Next
    Application.DisplayAlerts = True
    zROW = Range("A1").End(xlDown).Row
    For I = 1 To zROW
        Rows(I & ":" & I).Copy
        zSELSHE (Cells(I, 1))
        Range("A65535").End(xlUp).Offset(1).Select
        If [A1] = "" Then Range("A1").Select
        ActiveSheet.Paste
        Sheets(zNAME).Select
    Next
    MsgBox "拆分工作完成。", vbInformation, "报告"
End Sub
Sub zSELSHE(zNAME As String)
    On Error GoTo zADD
    Sheets(zNAME).Select
    Exit Sub
zADD:
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = zNAME
    Sheets(zNAME).Select
End Sub

TA的精华主题

TA的得分主题

发表于 2013-1-15 09:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
上传附件   

TA的精华主题

TA的得分主题

发表于 2013-1-15 09:37 | 显示全部楼层
本帖最后由 lzqmsy 于 2013-1-15 09:39 编辑

Sub 分账()
Dim sh As Worksheet
Application.DisplayAlerts = False
For Each sh In Worksheets
    If sh.Name <> "明细账" Then
       sh.Delete
    End If
Next
Application.DisplayAlerts = True
AR = [A1].CurrentRegion
Set D = CreateObject("SCRIPTING.DICTIONARY")
For I = 2 To UBound(AR)
    D(AR(I, 1)) = ""
Next
K = D.KEYS
For I = 0 To D.Count - 1: ReDim BR(1 To UBound(AR), 1 To UBound(AR, 2)): L = 1
    For J = 2 To UBound(AR)
        If AR(J, 1) = K(I) Then
            L = L + 1
            For T = 1 To UBound(AR, 2)
                BR(L - 1, T) = AR(J, T)
            Next
        End If
    Next
crr = Range("A1", Cells(1, UBound(AR, 2)))
Sheets.Add AFTER:=Sheets(Sheets.Count)
Sheets(I + 2).Name = K(I)
Sheets(I + 2).[A1].Resize(1, UBound(BR, 2)) = crr
Sheets(I + 2).[A2].Resize(UBound(BR), UBound(BR, 2)) = BR
Next
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 05:25 , Processed in 0.033407 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表