Excel 案例与基础讲解(上)
1.文章内容及目的
好久没写了,本文是来总结一下最近学习的Excel基础。为了让自己记忆的更好,用实战+案例的形式更能记清楚Excel的每一个基础操作。
(1)本文的案例是员工信息的清理 + 工资条的制作。
(2)案例里面含有excel 查询基础操作,截取基础操作,数据验证基础操作,数据模拟基础,还有一些基础的选择 + word和excel的结合应用。
(3)希望能给有excel基础的朋友多一个练手的案例
2.项目的简述与需求
员工信息表员工信息表,我们第一个案例的主表。在员工信息表里面,我们的清洗目标,或者说是我们的需求是:
(1)随机在部门表里生成 部门表中的四个部门 要求 用index+randbetween 和 choose+randbetween 两种方法来做
(2)编号 变成部门名称缩写 + 编号 例如 序号1的是生产部的 就是 ‘SCB01’
(3)名字里面含有数字和字符,清洗名字里面的数字和字符 只保留姓名(注意存在同名的人)
(4)随机生成 2005-07-07 到2019 -03-01 的入职日期 放在日期表
(5)计算工龄 不足一年的不算
(6)计算不足一年的工龄(月)
(7)出生日期的提取
(8)年龄的提取
(9)性别的提取,身份证倒数第二位,奇数 显示男 偶数为女
(10)从省份表里面提取省份 (身份证号前2位)
(11)从省份表里面提取区县 (身份证号前6位)
接下来是所有辅助需求的表,部门表:
部门表
部门表 用于给员工信息表提供部门的信息
省市表:
省份表部分截取图
省份表用于给员工信息表提供省份信息及区县信息
3. 实际操作与讲解(1-4)
一共是11个需求,我们先来完成前四个.
(1)随机在部门表里生成 部门表中的四个部门 要求 用index+randbetween 和 choose+randbetween 两种方法来做
第一个题主要是锻炼一下 如何模拟数据。在数据分析领域,有的时候需要我们模拟一些数据来测试我们做的模型,或者是看一下分析方法的对错。所以如何模拟数据也是要掌握的。
先介绍一下题目所用函数:
(1)INDEX(array, row_num, [column_num])
第一个参数是 选定的查询区域
第二个参数是返回的行号
第三个参数是返回的列号
INDEX 函数通过区域,行号,列号返回一个单元格里面的一个值。
(2)RANDBETWEEN(bottom, top)
RANDBETWEEN 函数有两个参数,第一个参数是随机数的最低点,第二个参数是最高点。例如 RANDBETWEEN(1,4),随机返回1到4 范围内的整数。RANDBETWEEN 就是随机返回从bottom 到 top 这个范围的数值。
(3)CHOOSE(index_num, value1, [value2], ...)
CHOOSE 函数第一个参数是选择选取的位置。第二个参数之后是选择的范围。例如choose(1,1,2,3)的意思是,从1,2,3 中选取位置为1的数返回,结果为1.
问题(1)具体操作实现:
第一题 index+randbetween这道题的思路就是index + randbetween,我们可以用index函数去定位部门的查询范围,过程中用F4 固定一下函数,防止填充数据时,区域变动。然后用随机数(randbetween)的方式让index 函数返回具体部门的值。
第二种方法:choose+randbetween
第一题choose+randbetween
也可以用 choose 函数把部门值放入选择范围, 然后用随机数的方式,改变choose 函数的第一参数(选取位置),来达到随机选择的效果。
(2)编号 变成部门名称缩写 + 编号 例如 序号1的是生产部的 就是 ‘SCB1’
介绍题目所用的函数 IF 函数
IF(logical_test, value_if_true, [value_if_false])
IF 函数第一个参数时判断的条件
第二个参数是条件为真的时候,返回的值
第二个参数是条件为假的时候,返回的值
另外这道题 还用到了连接符号&,可以把两个文本连接成一个文本。
问题(2)具体操作实现:
第二题if函数嵌套公式比较长,发出来方便观看:
=IF(F2="行政部","XZB",IF($F2="生产部","SCB","XSB")))&A2
思路是,用第一个IF函数判断 是不是管理部,如果是就返回GLB 不是的话,套一个IF函数,判断是不是行政部,是返回XZB不是就继续套IF 函数,最后因为只有4个部门,所以到第三个IF函数的时候,如果都不是前三个部门,那就只能是最后的销售部,所以直接返回XSB。最后连接上A2单元格的编号,就做好了。
(3)名字里面含有数字和字符,清洗名字里面的数字和字符 只保留姓名(注意存在同名的人)
这个题有两种方法,因为第一种方法可以用LEN 和 LENB 函数去完成,但是因为我是英文版,没有LENB函数,所以第一种方法就不给大家演示了,希望大家自己下去查这种方法。
第二种方法是把excel 和 office word 进行结合来完成一些复杂的清理工作。office word 里面有强大的查找替换功能,所以有些时候,我们可以用Excel + Word 来达到我们想要的操作。
问题(3)具体操作实现:
第三题Word+Excel结合主要思路 用Word 强大的查找替换功能 来做Excel 不方便做的事情,从而达到更高的效率。过程中的正则表达式,可以在word里面查看,也可以搜素Word正则表达式 来学习。
(4)随机生成 2005-07-07 到2019 -03-01 的入职日期 放在日期表
主要函数 还是randbewteen,这个函数除了可以模拟数字,也可以模拟时间,算是这个函数的又一个用法。
问题(4)具体操作实现:
第四题randbetween模拟日期至此前四题已经完成我们总结一下前4题:
前4题主要练习了数据的模拟,和数据的清理 方面的一些基础的知识,包含了choose,randbetween,if等函数的一些基础应用。也希望以后能把这些函数灵活的运用到工作和生活中。接下来我们做第(5),(6) 两个有关时间操作的题目。
4. 实际操作与讲解(5-6)
第五题和第六题都是excel 时间函数的应用。第五题,第六题的要求先列出来看一下:
(5)计算工龄 不足一年的不算
(6)计算不足一年的工龄(月)
这两道题所应用的函数:
DATEDIF 函数, DATEDIF 函数如果你在excel里面输入是没有提示的,但是这个函数确实可以在excel里面应用,所以需要我们手动去输入这个函数,下面我们来看看这个函数的参数和解析:
起始日期 | 结束日期 | 差 | 公式 | 参数 | 说明 |
---|---|---|---|---|---|
2010/9/1 | 2012/2/4 | 1 | ==DATEDIF(A2,B2,"Y") | Y | 相差年数 |
2010/8/2 | 2012/2/4 | 18 | =DATEDIF(A3,B3,"M") | M | 相差总月数 |
2010/8/1 | 2012/2/8 | 6 | =DATEDIF(A4,B4,"YM") | YM | 一年内相差月数 |
2010/8/5 | 2012/2/8 | 552 | =DATEDIF(A5,B5,"D") | D | 相差总天数 |
2010/8/1 | 2012/2/4 | 187 | =DATEDIF(A6,B6,"YD") | YD | 一年内相差天数 |
2010/8/5 | 2012/2/10 | 5 | =DATEDIF(A7,B7,"MD") | MD | 一月内相差天数 |
A2 代表这起始日期,B2代表结束日期,参数说明都在表格里面。
问题(5,6)具体操作实现:
第56题 datedif 函数分析思路主要还是应用datedif函数来进行日期的运算,这个函数的基础用法就先展示到这里。案例结合基础讲解的上半部分,就先结束。下半部分主要介绍几个查询函数的基础,外加简易查询的制作。
因为有些数据是随机生成的所以,可能每个gif数据不太一样,不过这个不影响做题的方法,所以如果发现这个问题,忽略就好。
内容及资料均来源于网课,个人在网课的案例框架基础上更改了一些数据,适用于个人的学习笔记,如有侵权联系删除。