为什么要学习Excel?首先,Excel是一个好用的工具,并不会因为你会Python而成为数据分析师,而是能用任何工具解决实际的业务问题,其次,Excel因为其简单易用,而受到人们的青睐。一般学习数据分析,都是以了解Excel函数为基础,以Excel函数的学习为基础,对于后续SQL、Python、DAX函数有很好的帮助,对于概念性的东西加深理解。
对于Excel的学习有一个误区,大多数人认为Excel只要会复制粘贴以及筛选数据就可以,但实际上,Excel在数据分析中有很大的作用,需要多种Excel函数嵌套使用,并搭配数据透视表功能,以及Excel高级图表制作,举一个Excel文本清洗的例子,测验一下你是否真正掌握Excel,如下分别提取货号和销售单编号里的字母和数字,一起试试吧!
提取货号字母
=LEFT(C2,3)
提取货号数字
=RIGHT(C2,4)
提取单号字母
=LEFT(D2,FIND("-",D2)-1)
提取单号数字
=MID(D2,FIND("-",D2) 1,100)
以上引入了Excel函数学习,本章节整理了在数据分析中常用的EXCEL函数,包含文本清洗类、关联匹配类、逻辑运算类、计算统计类、时间序列类五类,针对不同的函数,进行归类和汇总,每一个EXCEL函数均包含内置参数以及参数使用说明,下面一起来学习。
一、文本清洗类
Find
检索字符位置(区分大小写)
FIND(find_text,within_text,start_num)
FIND(要查找的内容加引号或单元格,查找区域(单元格),从几个字开始查找)
Substitute
检索替换文本
SUBSTITUTE(text,old_text,new_text,instance_num)
SUBSTITUTE(目标单元格,旧内容,新内容,替换第几个或全替换)
Left
从一个文本字符串的第一个字符开始,截取指定数目的字符
LEFT(text,num_chars)
LEFT(目标单元格,从内容的左边开始截取指定的字的个数)
Right
从一个文本字符串的最后一个字符开始,截取指定数目的字符
RIGHT(text,num_chars)
RIGHT(目标单元格,从内容的右边开始截取指定的字的个数)
Mid
从一个文本字符串的指定位置开始,截取指定数目的字符
MID(text,start_num,num_chars)
MID(目标单元格,内容的左边指定开始位置,指定截取的字的个数)
Text
将数值转换成自由的显示格式文本
TEXT(value,format_text)
TEXT(源数据,要显示的方式代码)
Concatenate
将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中
CONCATENATE(text1,text2,……)
CONCATENATE(目标单元格或加引号的文本1,目标单元格或加引号的文本2,……)
Trim
删除多余的空格字符
TRIM(text)
TRIM(目标单元格)
Replace
替换指定字符数的文本
REPLACE(old_text,start_num,num_chars,new_text)
REPLACE(替换其部分字符的文本,是要用new_text替换的old_text中字符的位置,替换中字符的个数,要用于替换文本)
Len
统计文本字符串中字符数目(计算文本的长度)
LEN(text)
LEN(目标单元格)
Lookup
搜索单行、单列、区域、查找对应值
向量形式LOOKUP(lookup_value,lookup_vector,result_vector)
向量形式LOOKUP(条件,含条件的搜索区域,对应的搜索区域)
数组形式LOOKUP(lookup_value,array)
数组形式LOOKUP(条件,搜索的区域)
Row
返回行序号
ROW(reference)
ROW(目标单元格)
Vlookup
按照垂直方向搜索区域
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
VLOOKUP(要查找的内容,搜索的区域,从查找区域首列开始到要找的内容的列数,指定是近似匹配还是精确匹配查找方式)
Column
返回序列号
COLUMN(reference)
COLUMN(目标单元格)
Index
返回行和列交叉位置的值
INDEX(array,row_num,column_num)
INDEX(单元格区域或数组常量,行序号,列序号)
Offset
计算指定位置的单元格引用
OFFSET(reference,rows,cols,height,width)
OFFSET(起始坐标,从坐标开始算的行数,从坐标开始算的列数,高,宽)
Match
返回搜索值的相对位置
MATCH(lookup_value,lookup_array,match_type)
MATCH(查找条件,查找区域,查找方式)
Hyperlink
创建超链接
HYPERLINK(link_location,friendly_name)
HYPERLINK(目标地址或单元格引用,显示说明或单元格引用)
And
检测所有的条件是否为真
AND(logical1,logical2,……logical30)
AND(要判断的单元格)
Or
检测任意一项条件是否为真
OR(logical1,logical2,……logical30)
OR(要判断的单元格)
IF
根据条件满足与否返回不同的值
IF(logical_test,value_if_true,value_if_false)
IF(条件,条件满足时时返回的值,条件不满足时返回的值)
Not
对表示条件的参数的逻辑值求反
NOT(logical)
NOT(要判断的单元格)
True
表示总是为真
TRUE()
不需要参数
False
表示总是为假
FALSE()
不需要参数
Sum
求和计算
SUM(number1,number2, ...) SUM(列名) SUM(行名)
SUM(单个或多个单元格) SUM(列的名称 如:AA) SUM(行的名称 如:1:1)
Rank
计算位置(排位)
RANK(number,ref,order)
RANK(要判断的单元格,查找的区域,1为最小数排第一0为最大数排第一)
Sumif
对满足条件的单元格的数值求和
SUMIF(range,criteria,sum_range)
SUMIF(要找的内容所在的区域,要找的内容,与要找的内容所在的区域对应的数值区域)
Sumproduct
先计算多个数组的元素之间的乘积再求和
SUMPRODUCT(array1,array2,……array30)
SUMPRODUCT(数据1,数据2,……,数据30)
Rand
产生大于或等于0且小于1的随机数
RAND()
RAND()不需要参数
Randbetween
产生指定数值之间的随机数
RANDBETWEEN(bottom,top)
RANDBETWEEN(最小整数,最大整数)
Substotal
计算各种总计值
SUBTOTAL(function_num,ref1,ref2,……ref29)
SUBTOTAL(计算方式,要计算的区域)
Countif
计算满足条件的单元格计数
COUNTIF(range,criteria)
COUNTIF(要找的内容所在的区域,要找的内容)
Averagea
计算所有数据的平均值
AVERAGEA(value1,value2,...)
AVERAGEA(单元格或单元格区域)
Int
将数值向下舍入为最接近的整数
INT(number)
INT(要转换的单元格)
Max
计算数值的最大值
MAX(单元格或单元格区域)
MAXA(单元格或单元格区域)
Min
计算数值的最小值
MIN(number1,number2,...)
MIN(单元格或单元格区域)
Quartile
计算四分位数
QUARTILE(array,quart)
QUARTILE(数字区域,指定在哪个位置)
Round
根据指定的位数位置四舍五入
ROUND(number,num_digits)
ROUND(目标单元格,要保留位数)
Year
从日期中提取出"年"
YEAR(serial_number)
YEAR(要查的单元格)
Month
从日期中提取出"月"
MONTH(serial_number)
MONTH(要查的单元格)
Weekday
计算除了周末和节假日之外的日期
WORKDAY(start_date,days,holidays)
WORKDAY(指定日期,几个工作日,自己特定的非工作日)
Weeknum
计算从1月1日算起的第几个星期
WEEKNUM(serial_num,return_type)
WEEKNUM(日期,2)
Day
从日期中提取出"日"
DAY(serial_number)
DAY(要查的单元格)
Date
从年、月、日来计算日期
DATE(year,month,day)
DATE(年,月,日)
Now
计算当前的日期和时间
NOW()
NOW()该函数没有参数,但必须要有()
Today
计算当前的日期
TODAY()
TODAY()返回当前的日期