每 5 年领一次长期贡献奖,在 Excel 中根据无法整除的工龄计算奖金

文摘   2024-12-26 19:00   上海  

公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必 “设为星标”哦!!!


点击上方蓝字 --> 点击“...”--> 选择“设为星标


今天要讲解的也是一个经典案例,将一列数值按指定的分母分成多个等份,余数单独计一份。


案例:


根据下图 1 中每个人的工龄计算他们应得的长期贡献奖金,规则如下:

  • 每满 5 年得 1000 元;

  • 不满 5 年的部分,3 年及以上视同为 5 年;

  • 3 年以下得 500


效果如下图 2 所示。


解决方案:


1. 选中数据表的任意单元格 --> 选择工具栏的“数据”-->“从表格”


2. 在弹出的对话框中保留默认设置 --> 点击“确定”


表格已经上传至 Power Query。


3. 选择工具栏的“添加列”-->“自定义列”


4. 输入以下公式 --> 点击“确定”:

List.Transform(List.Split({ 1..[工龄]},5),List.Count)


公式释义:

  • List.Split({ 1..[工龄]},5):

    • List.Split 函数用于将列表分割成多个子列表,每个子列表包含指定数量的元素‌;

    • 语法为 List.Split(list, count),list 是要分割的列表,count 是每个子列表中应包含的元素数量;

    • 比如,马凤英的工龄为 6,List.Split(list, 5) 就会将这个列表分割成 1 个包含 5 个元素的子列表,以及另一个包含剩余元素的子列表,结果为 {{1, 2, 3, 4, 5}, {6}};

  • List.Transform(...,List.Count):

    • List.Transform 函数‌通过将转换函数 transform 应用到列表 list 来返回值的新列表;

    • 语法为 List.Transform(list as list, transform as function) as list;第一个参数 list 是要处理的原始列表,第二个参数 transform 是一个函数,用于定义如何转换列表中的每个元素;转换后的结果会变成一个新的列表;

    • 比如 List.Transform({1, 2}, each _ +1) 表示将 1 与列表 {1, 2} 中的每个值相加,结果为 {2, 3};

    • 本案例中的公式表示统计第一个参数中的列表个数,结果变成一个新的列表。


5. 点开“自定义”旁边的扩展钮 --> 选择“扩展到新行”


6. 选择工具栏的“添加列”-->“条件列”


7. 在弹出的对话框中按以下方式设置 --> 点击“确定”:

  • 列名:选择“自定义”

  • 运算符:选择“大于或等于”

  • 值:输入 3

  • 输出:输入 1000

  • ELSE:输入 500


8. 选择工具栏的“主页”-->“分组依据”


9. 在弹出的对话框中按以下方式设置 --> 点击“确定”:

  • 在第一个下拉菜单中选择“姓名”;

  • 新列名:输入“奖金”

  • 操作:选择“求和”;

  • 柱:选择“自定义.1”


10. 删除“姓名”列。


11. 选择工具栏的“主页”-->“关闭并上载”-->“关闭并上载至”


12. 在弹出的对话框中选择“表”--> 选择“现有工作表”及所需上传至的位置 --> 点击“加载”


右侧绿色的表格就是每个人的长期贡献奖金,虽然 1 年的不能算“长期”,哈哈。


转发、点赞、在看也是爱!

Excel学习世界
你遇到的所有 Excel 坑,我都帮你趟过了。
 最新文章