1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求【求大神】员工社保缴费汇总预算统计(员工社保实战需求)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-4-9 14:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 1565785678 于 2025-4-9 14:49 编辑
sunya_0529 发表于 2024-8-19 16:52
兴趣是最好的老师,想学多在论坛里找相关的教程,多练习就会有提高了

大佬,要是养老基数和医疗基数不一样怎么办呀?怎么改代码呀?

需要修改.rar

26.01 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2025-4-9 17:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1565785678 发表于 2025-4-9 14:31
大佬,要是养老基数和医疗基数不一样怎么办呀?怎么改代码呀?

代码修改一下——

  1. function 计算社保公积金缴费明细() {
  2.     const awf = Application.WorksheetFunction;
  3.     const SIHF = Range('G1').CurrentRegion().slice(1).reduce((a, c) => {        //循环读取各险种费率及基数上下限存入对象SIHF
  4.         a[c[1] + '单位'] = [c[3], c[4], c[5]].map(v => Number(v) || 0);
  5.         a[c[1] + '个人'] = [c[2], c[4], c[5]].map(v => Number(v) || 0);
  6.         return a;
  7.     }, {});
  8.     const MONTH = Number(String(Range('G2')()).replace('月', ''));        //定义计算月份
  9.     const res = [['月份', '姓名', ...Object.keys(SIHF), '单位合计', '个人合计', '总合计']];        //定义结果存储数组
  10.     Range('A1').CurrentRegion().filter(r => MONTH >= r[3] && MONTH <= r[4]).forEach(v => {
  11.         let arr = Object.keys(SIHF).map(k => {
  12.             if (k.includes('大额医保')) return MONTH == 1 ? 6 : 4;        //大额医保,1月份金额为6元,其余为4元
  13.             //根据基数上下限和费率,计算缴费金额,社保费四舍五入保留2位小数(分),公积金四舍五入到整数(元)
  14.             return awf.Round(Math.min(Math.max(v[k.includes('基本医保') ? 2 : 1], SIHF[k][1]), SIHF[k][2]) * SIHF[k][0], k.includes('公积金') ? 0 : 2);
  15.         });
  16.         const SUM_COMPANY = `=SUMPRODUCT((RIGHT(R1C[-${arr.length}]:R1C[-1],2)="单位")*RC[-${arr.length}]:RC[-1])`;        //单位合计
  17.         const SUM_STAFF = `=SUMPRODUCT((RIGHT(R1C[-${arr.length + 1}]:R1C[-2],2)="个人")*RC[-${arr.length + 1}]:RC[-2])`;        //个人合计
  18.         const SUM_TOTAL = `=RC[-1]+RC[-2]`;        //总合计
  19.         res.push([MONTH + '月', v[0], ...arr, SUM_COMPANY, SUM_STAFF, SUM_TOTAL]);
  20.     });
  21.     //添加末行汇总
  22.     res.push([, `${res.length - 1}人`, ...Array(Object.keys(SIHF).length + 3).fill('').map(v => `=SUM(R[-${res.length - 1}]C:R[-1]C)`)]);
  23.     with (Range('Q1').Resize(res.length, res[0].length)) {
  24.         CurrentRegion.Clear();        //清空结果区域
  25.         Value2 = res;        //输出结果
  26.         Borders.LineStyle = xlContinuous;        //添加边框线
  27.         HorizontalAlignment = xlHAlignCenter;        //单元格内容水平居中
  28.         VerticalAlignment = xlHAlignCenter;        //单元格内容垂直居中
  29.         NumberFormat = `_ * #,##0.00_ ;;_ * "-"??_ ;@`;        //设置单元格格式
  30.         Rows(1).Font.Bold = true;
  31.         Rows(1).WrapText = true;
  32.     }
  33. }
复制代码

TA的精华主题

TA的得分主题

发表于 2025-4-21 16:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
很厉害的大神,点赞来学习一下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-28 14:01 , Processed in 0.021494 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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