亲爱的表弟你好:
又到了学习函数的时候了。 今天继续给大家分享CELL功能的知识。 期待收到一朵小花和无数深情的眼神。
在日常应用中,经常会用到从主表中拆分数据。 例如,将销售数据提取到每个销售部门工作表,将学生列表提取到每个班级工作表......
今天分享的内容是与分裂相关的内容。
1 动态获取工作表名称
打开Excel工作簿,在某个单元格中输入公式:=CELL("",A1),就会返回一串字符串,如
D:\ CELL 函数\[.xlsx] 汇总表
其中“Learn CELL ”为文件夹名称; “[.xlsx]”是工作簿的名称和类型; “主表”是单元格A1所在的工作表的名称。
如果我们想单独获取工作表的名称,比如这里的“总表”,我们可以使用text函数来处理CELL函数的结果。
=MID(单元格("",A1),查找("]",单元格("",A1))+1,99)
或者:
=TRIM(右((单元格("",A1),"]",REPT(" ",50)),50))
方法①是MID+FIND的函数例程。
FIND函数查询字符“]”在字符串中的位置,并加1。MID函数开始从这个结果中取数字,取数字99。99是一个非常大的数字。 也可以是66、88等,只要超出预期的字符串长度,就可以改为250或25。
方法②是TRIM+的套路。
这也是常用的文本处理函数例程。 为了减少雾霾、保护环境、拯救人物等,这里不再赘述。
好了,这就是我们今天分享的第一个知识,利用CELL函数动态获取工作表名称。 有朋友说工作表名称就在那里。 我一眼就看出来了。 为什么要用函数来计算呢? 别太心机了...
当然,这是有道理的。
2 批量分割数据
举个简单的栗子。
有这样一张表格,如下图,是某星球百强企业的人员信息表格。 现在我们需要将相关人员的信息按照性别批量填写到分表中。 比如女孩填写女孩表,怪物填写怪物表等等。而当主表中的信息发生变化时,比如某人的性别从男孩变成了女孩(哈哈,传说中的泰国七日游) .),或者当有新数据时,子表中的数据也会发生相应的变化。 。
●批量选择需要拆分数据的工作表
左键单击选择[Boy]表,按住Shift键,然后选择[]表,最后释放Shift键。 此时,除【主表】之外的子表将成为一个组合工作表,并且每个子表都被选中。
●输入数组公式分割数据
选择合并工作表中任意工作表的A2单元格,例如男生表的A2单元格,使用组合键,输入下面的数组公式,向下向右复制,填充区域A2:B50。
=INDEX(总列表!B:B,SMALL(IF(总列表!$C$2:$C$13=MID(CELL("",A1),FIND("]",CELL("",A1))+ 1,99),行($2:$13),4^8),行(A1)))&""
阳光明媚,长城悠长——嗨,那是谁? 看,这个长老太太的裹脚函数又来了,而且是INDEX+SMALL+IF函数套路:INDEX+SMALL教程贴。 正如我们在上一期中所说,这是一刀切的做法。 这是使用EXCEL函数时必须了解的例程之一。 不知道你后来学会了吗?
我们简单说一下这个公式的含义。
中(单元格(“”,A1),查找(“]”,单元格(“”,A1))+1,99)
获取单元格A1所在工作表的表名。 需要注意的是,CELL("",A1)的第二个参数A1不能省略。 如果省略,将获取到最后更改单元格的工作表的表名,这将导致公式给出错误的结果。
IF函数判断合计表C2:C13区域中的值是否等于对应的工作表名称。 如果相等,则返回C列值对应的行号,否则返回4^8,结果是一个内存数组。
SMALL函数将IF函数的结果从小到大取,随着公式向下填充,依次提取第1、2、3、4...N个最小值,从而得到性别和满足条件的公式。 工作表中同名单元格的行号。
INDEX函数根据SMALL函数返回的索引值获取结果。
当SMALL函数得到的结果为4^8,即65536时,说明所有满足条件的行号都已经穷尽了。 此时,INDEX函数将返回单元格的值。 一般来说,具有如此大行号的单元格是空白单元格。 使用 & "" 可以避免空白单元格返回零值的问题,并使它们返回 false 为空。
●取消分组工作表状态
填写完公式后,左键单击不属于合并工作表的【普通工作表】,Excel会自动取消合并工作表状态。 您还可以右键单击合并工作表中的任意工作表,然后从弹出的右键菜单中选择它。 ,单击[取消工作表分组]。
至此,根据工作表名称批量拆分主表数据的操作完成; 当主表中的数据发生变化时,子表中的数据也会发生相应的变化。 眼见为实:
暖心小贴士:
利用数据透视表的【显示报表筛选页面】功能或者VBA编程也可以达到快速拆分数据的目的,但三者在可操作性、可接受性、动态性、适用性等方面存在很多差异。 不同之处。