小伙伴们好啊,今天和大家分享一组简单高效的Excel函数公式,点滴积累,也能提高工作效率。
1、按条件合并内容
如下图,希望将B列的姓名,按照不同部门合并到一个单元格里。
=TEXTJOIN(",",1,IF(A$2:A$15=D2,B$2:B$15,""))
公式中要合并的内容为:
IF(A$2:A$15=D2,B$2:B$15,"")
也就是如果A$2:A$15等于D2,就返回B$2:B$15对应的内容,否则返回空文本"",结果是一个内存数组:
{"沙瑞金";"高育良";"蔡成功";"陈岩石";"";"";"";""……}
TEXTJOIN函数对IF函数得到的内存数组进行合并,第一参数指定使用间隔符号为逗号,第二参数使用1,表示忽略内存数组中的空文本。
2、自定义排序
如下图,希望根据F列的职务对照表,对左侧的员工信息进行排序。
H2单元格输入以下公式,按回车即可。
=SORTBY(A2:B21,MATCH(B2:B21,F:F,))
公式中的MATCH(B2:B21,F:F,)部分,分别计算出B2:B21单元格中的各个职务在F列中所处的位置。
接下来再使用SORTBY函数,根据这些位置信息对A2:B21中的内容进行排序处理。
3、二维表转换为数据列表
如下图所示,希望将A~E的二维表,转换为右侧所示的数据列表,部门和姓名分两列显示。
G2单元格输入以下公式,按回车。
=HSTACK(TOCOL(IF(B2:E5<>"",A2:A5,0/0),2),TOCOL(B2:E5,1))
公式由两个TOCOL函数组成。
先看第一部分TOCOL(IF(B2:E5<>"",A2:A5,0/0),2)。
使用IF函数进行判断,如果B2:E5不等于空白,就返回A2:A5中对应的部门名称,否则返回由0/0得到的错误值#DIV/0!:
接下来再使用TOCOL函数,忽略以上数组中的错误值将数组转换为一列。
再看公式中的TOCOL(B2:E5,1)部分,这部分的作用是将B2:E5中的姓名,在忽略空白单元格的前提下转换为一列。
最后用HSTACK函数将以上两个TOCOL的数组结果,按左右方向合并为一个数组。
4、合并多表中的名单
如下图所示,1~4月的员工考勤记录,分别存放在不同工作表中。每个月都可能有新入职以及离职人员,希望从这四个表中提取出不重复的员工名单。
在“汇总表”的A1单元格输入以下公式,按回车即可。
=UNIQUE(TOCOL('1月:4月'!A:A,1))
TOCOL函数第一参数使用多工作表引用方式,表示要处理的数据范围为'1月:4月'!A:A,表示“1月”至“4月”工作表的A列,第二参数使用1,表示忽略空白单元格。
TOCOL函数将四个工作表的A列以忽略空白单元格的形式合并为一列,再使用UNIQUE函数提取出不重复名单。