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

Excel学习世界 2024-12-19 22:26:49

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

案例:

根据下图 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 年的不能算“长期”,哈哈。

0 阅读:1

Excel学习世界

简介:Excel 学习交流