ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 社保按公司自动分表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-13 08:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
caicl 发表于 2018-8-10 14:59
另外我发现标题非高管的命名显示的是高管,麻烦也看下是否能调整下?

Option Explicit

Sub a()
Dim sh As Worksheet
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For Each sh In Sheets
    If sh.Name <> "总表" Then
        sh.Delete
    End If
Next
Dim cnn As Object
Dim Sql As String, arr, i%, rs, BT, DBT, R%
BT = Array("序号", "一级部门", "二级部门", "工号", "姓名", "入职日期", "级别", "缴费基数", "公司缴费", "个人缴费", "合计缴费")
DBT = Array("制表:", "", "", "", "审核:", "", "", "", "审批:")
Set cnn = CreateObject("ADODB.CONNECTION")
Set rs = CreateObject("adodb.Recordset")
cnn.Open "Provider=Microsoft.ACE.OleDb.12.0;Extended Properties='Excel 12.0;HDR=YES'; Data Source=" & ThisWorkbook.FullName
Sql = "select distinct 所属公司 from [总表$p2:p] where 所属公司 is not null"
arr = cnn.Execute(Sql).getrows
For i = 0 To UBound(arr, 2)
    Sql = "select 一级部门,二级部门,工号,姓名,入职日期,级别,缴费基数,公司缴费,个人缴费,合计缴费 from [总表$B2:p] " _
            & "where 所属公司='" & arr(0, i) & "' AND 级别 IN ('A级','B级')"
        rs.Open Sql, cnn, 1, 1
            If rs.RecordCount > 0 Then
                Sheets.Add AFTER:=Sheets(Sheets.Count)
                 ActiveSheet.Name = arr(0, i) & "-高管"
                 ActiveSheet.[A1] = Replace(Sheet1.[A1], "购买社保清单", "") & "在" & arr(0, i) & "公司购买社保清单_高管"
                GoSub 100
                rs.Close
            End If
            Sql = "select 一级部门,二级部门,工号,姓名,入职日期,级别,缴费基数,公司缴费,个人缴费,合计缴费 from [总表$B2:p] " _
            & "where 所属公司='" & arr(0, i) & "' AND 级别 not IN ('A级','B级')"
            If rs.State = 1 Then rs.Close
        rs.Open Sql, cnn, 1, 1
            If rs.RecordCount > 0 Then
                Sheets.Add AFTER:=Sheets(Sheets.Count)
                ActiveSheet.Name = arr(0, i) & "-非高管"
                 ActiveSheet.[A1] = Replace(Sheet1.[A1], "购买社保清单", "") & "在" & arr(0, i) & "公司购买社保清单_非高管"
                GoSub 100
                rs.Close
            End If
Next
cnn.Close: Set cnn = Nothing
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
100:
                    With ActiveSheet
                        .[A2].Resize(1, 11) = BT
                        .[a3] = 1
                        .[B3].CopyFromRecordset rs
                        If rs.RecordCount > 1 Then
                            .Range("A3").AutoFill Destination:=Range("A3").Resize(rs.RecordCount), Type:=xlFillSeries
                        End If
                        R = .[a9999].End(3).Row
                        .Range("a2:k" & R).Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(9, 10, 11) _
        , Replace:=True, SummaryBelowData:=True
                        .Range("A1:K1").Merge
                        .Cells.HorizontalAlignment = xlCenter
                        .Cells.VerticalAlignment = xlCenter
                        R = .[B9999].End(3).Row
                        .Range("a2:k" & R).Borders.LineStyle = 1
                        .[A1].Offset(R + 1, 0).Resize(1, 9) = DBT
                         .Columns("A:k").EntireColumn.AutoFit
                         .Cells.Font.Name = "微软雅黑"
                        .Cells.Font.Size = 10
                    End With
                    Return
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-8-13 12:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
蓝桥老师挺有耐心的...

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-17 16:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

这个新代码好像还是无法解决我想要的格式,能麻烦蓝桥老师再帮忙看下吗?
一、格式就是按我附件里的分出来的表的:
1、把所有列调整在一页;
2、字体为自动缩小;
3、每列的列宽和行距等跟我提供的附件里的表格(A-非高管)一样。
二、分出来的工作表标题按总表中的:“2018年8月A公司购买社保清单”按分类自动更新成“2018年8月某公司A公司购买社保清单-非高管/高管”,某公司可以取总表中的所属公司此列数据,此项现在分出来的时候A公司与某公司反了。
请帮忙看下能否调整下,谢谢!

TA的精华主题

TA的得分主题

发表于 2018-8-17 17:39 | 显示全部楼层
caicl 发表于 2018-8-17 16:36
这个新代码好像还是无法解决我想要的格式,能麻烦蓝桥老师再帮忙看下吗?
一、格式就是按我附件里的分出 ...

这典型的就是找人代工啊。字体行距等就是不会,你录制下宏也能捣鼓出来啊

静等蓝桥老师!

TA的精华主题

TA的得分主题

发表于 2018-8-17 18:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 07:43 , Processed in 0.021940 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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