ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请帮忙看如何计算津贴

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-17 14:57 | 显示全部楼层 |阅读模式
本帖最后由 cyqiu 于 2024-10-17 15:32 编辑

有以下500条记录,需要根据入职日期计算工龄,每月根据工龄计算津贴。

假如现在需要计算9月份津贴,员工2024年9月份中旬工龄到达第二个档次时则需要分段计算,即上旬用第一个档次的标准,下旬用第二个档次的标准折算。
工龄与档次标准
5年(含)或以上200元
3年(含)以上5年以下170元
1年(含)以上3年以下150元
1个月(含)以上1年以下80元

具体如下图和附件,请大家多多指导,谢谢。

image.png

例子二.zip

8.21 KB, 下载次数: 17

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-22 19:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
差不多一个周了,还是没有大神帮忙,顶一顶
希望有大神能帮帮忙,谢谢!

TA的精华主题

TA的得分主题

发表于 2024-10-23 10:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 混沌音符 于 2024-10-23 10:25 编辑

这个天数的计算有点疑问,到底是按天去算还是按月去算,按天的话,具体是怎么算?
1、8月3日入职,9月算的时候,8月3~9月1,这是30天,那假如9月3日入职,10月算的时候,9月3~10月2还是10月1?
2、入职2023/1/31,离职2023/3/2,1月31~3月1是30天,3月2才按满一个月去算吗?

你辅助的单位是月,但第一个例子,不是按60*30天去算,第三第四个例子又是按30天

TA的精华主题

TA的得分主题

发表于 2024-10-23 11:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
参考公式:
  1. =LET(a,IF(C5="",$B$2,C5),b,DATEDIF(B5,SEQUENCE(DAY(a),,a+1,-1),"m"),REDUCE(0,b,LAMBDA(x,y,ROUND(SUM(x+XLOOKUP(y,$J$5:$J$8,$K$5:$K$8,0,-1,-1)/DAY(EOMONTH(a,0))),2))))
复制代码

因按天累加的稍微有些小数点的差异
1729653060728.png

TA的精华主题

TA的得分主题

发表于 2024-10-23 11:21 | 显示全部楼层
更新一下公式:
  1. =LET(a,IF(C5="",$B$2,C5),b,DATEDIF(B5,SEQUENCE(DAY(a),,a+1,-1),"m"),c,REDUCE(0,b,LAMBDA(x,y,x+XLOOKUP(y,$J$5:$J$8,$K$5:$K$8,0,-1,-1))),ROUND(c/DAY(EOMONTH(a,0)),2))
复制代码


1729654241794.png

TA的精华主题

TA的得分主题

发表于 2024-10-23 13:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Python+Pandas:
import pandas as pd
import numpy as np

df = pd.read_excel('Sample511.xlsx', usecols='a:g', header=3)
for i in df.index:
    df.loc[i, 'nMonths'] = (pd.Timestamp('2024-09-30').to_period('M') - df.loc[i, '入职日期'].to_period('M')).n
df['bonus1'] = pd.cut(df['nMonths'], bins=[1, 12, 36, 60, np.inf], labels=[80, 150, 170, 200], right=False)
df['bonus2'] = pd.cut(df['nMonths'], bins=[1, 12, 36, 60, np.inf], labels=[0, 80, 150, 170], right=False)

for i in df.itertuples():
    d = i.入职日期.day
    ld = i.离职日期.day if pd.notna(i.离职日期) else 30
    if d <= 2:
        df.loc[i.Index, '结果'] = i.bonus1
    else:
        df.loc[i.Index, '结果'] = i.bonus1 * (ld - d + 2) / 30 + i.bonus2 * (d - 2)/30
print(df.iloc[:, [0,1,2,3,10]])
image.png

TA的精华主题

TA的得分主题

发表于 2024-10-23 19:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =ROUND(SUMPRODUCT(
  2. XLOOKUP(INT((IF(C5="",$B$2,C5)-B5)/30),$J$5:$J$8,IFERROR(INDEX($K$5:$K$8, ROW($1:$4) + COLUMN($A1:$B1) - 1),),,-1,-1),
  3. IF(MIN(ABS(IF(C5="",$B$2,C5)-EDATE(B5,INDEX($J$5:$J$8,ROW($1:$4)))))=0,1,MIN(ABS(IF(C5="",$B$2,C5)-EDATE(B5,INDEX($J$5:$J$8,ROW($1:$4)))))+2)*{1,-1}+{0,1}*DAY(IF(C5="",$B$2,C5))
  4. )/30,2)
复制代码

TA的精华主题

TA的得分主题

发表于 2024-10-23 20:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=ROUND(SUM(LET(X,EOMONTH(B$2,-1)+ROW($1:$31),IF(X<=MIN(B$2,C5),LOOKUP(DATEDIF(B5-1,X,"M"),J$5:K$9))))/DAY(B$2),2)


image.png


AASC.zip

9.28 KB, 下载次数: 5

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-24 09:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
混沌音符 发表于 2024-10-23 10:23
这个天数的计算有点疑问,到底是按天去算还是按月去算,按天的话,具体是怎么算?
1、8月3日入职,9月算的 ...

感谢你的回复。
其实工龄正确来说就是入职第一天到下个月入职对应天数的前一天为满1个月。
2023/1/31入职,2023/2/28就是满1个月。
1、9/3入职,10月算的时候是10/2开始满1个月,10/1是没有津贴,10/2-10/31就是按80/30*30来算了。
2、入职2023/1/31,2023/2/28就是满1个月了,离职2023/3/2,所以算2月份的津贴时,0/30*27+80/30*1
算3月份津贴时,由于3/2离职,所以津贴就是80/30*2

TA的精华主题

TA的得分主题

发表于 2024-10-24 09:27 | 显示全部楼层
cyqiu 发表于 2024-10-24 09:18
感谢你的回复。
其实工龄正确来说就是入职第一天到下个月入职对应天数的前一天为满1个月。
2023/1/31入 ...

分母也是个问题,“10/2-10/31就是按80/30*30”,那如果10/1-10/31,就是80/30*31?
同理23年2月只有28日,分母一样是30,分子只有28,那23年1月1日入职,23年2月满算也是80/30*28?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 09:26 , Processed in 0.049489 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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