推荐WPS一个很好用的函数:SheetsName

职场   职场   2024-11-07 07:52   福建  

HI,大家好,我是星光


今天给大家分享的表格内容是一个函数。这个函数目前是WPS所独有的,名字叫做SheetsName。Sheets是工作表的意思,Name是名字,所以这个函数常用于获取当前工作簿内工作表的名称。


获取工作表的名称之后,又有两个典型的应用场景,一个是创建带超链接的工作表目录,另外一个是筛选包含指定关键字的工作表,将数据合并成一张总表~


创建带超链接的工作表目录...▼


筛选并合并名称带"月"字的工作表的数据...▼



……



1,基本语法



哒,打个响指,在分享这两个案例之前,照例还是看下该函数的基本语法:


=SHEETSNAME(  [单元格引用],  [行列方向],  [是否包含公式所在工作表])


一共有三个参数,都是可选的,如果所有参数都不选,返回结果是一个横向水平的数组,包含当前工作簿内所有工作表的名称(不含隐藏工作表)


=SHEETSNAME()


如果你不想让结果躺平,你想让结果站起来,你可以将第2参数设置为1。1表示返回一个纵向垂直数组,按行展开工作表名称。


=SHEETSNAME(,1)


如果你不但想让结果站起来,你还想把结果的头去掉去掉首个工作表的名称,那也不是不行,那可以将第3参数设置为1。1表示不包含公式所在工作表的名称。


=SHEETSNAME(,1,1)



这里做个严肃的说明,第3参数干的并不是砍头的买卖。它不是一定会去掉首个工作表的名称,而是去掉公式所在工作表的名称。因此,如果公式不是写在第1张工作表内,也就不具有砍头的效果。


Fuck head▼


……


最后再解释一下第1参数。它的作用是返回指定单元格的所属工作表名称。例如,以下公式返回工作表名称:看见星光


=SHEETSNAME(看见星光!A1)


同理,以下返回公式所在工作表的名称


=SHEETSNAME(A1)


……


⏫以上基础法语了解完了,⏬以下是两个典型的应用案例。



2,创建带超链接的工作表目录



在目录性质的工作表的A2单元格,输入以下公式,向下复制填充,直至公式结果返回空白,可以快速创建一个带超链接的工作表目录。



=LET(  _n,INDEX(SHEETSNAME(,,1),ROW(A1)),  IFERROR(    HYPERLINK(      "#'"&_n&"'!a1",      _n&REPT(" ",50)   ),"") )


公式首先定义了一个名称为_n的变量,它先使用sheetsname函数获取所有工作表的名称列表(不含隐藏工作表和公式所在工作表),再使用index函数按顺序把工作表名称提取出来。


然后使用hyperlink函数创建超链接。


hyperlink函数的第1参数为"#'"&_n&"'!a1",#表示当前工作簿,工作表名称前后加了单引号,是避免名称里有特殊字符导致链接失败。


第2参数为_n&REPT(" ",50),这是超链接显示的名字。一般来说,直接写_n也可以,我这里加了rept(空格,50),也就是在工作表名称后面加了50个空格。这样做的好处是,数据可以将单元格完完全全填满,鼠标不用必须点击工作表名称,点击单元格看似空白的地方也可以跳转到目标工作表。


📕小贴士:本例公式只能使用复制填充的方式编写,不能使用动态数组。动态数组只能溢出值,不能溢出超链接等其它属性。



3,筛选合并多个工作表的数据



假设有一个工作簿,包含了n张工作表,需要将其中包含关键字""的工作表的数据合并成一张总表。这类工作表的数据结构相同,换句话说,它们的字段(每列数据)的排列顺序一致,如下图所示:


在总表的A2单元格输入以下动态数组公式,计算结果会自动溢出到相邻区域:


公式看不全可以左右拖动...▼
=LET(  _key,"月",  _rngads,"!a2:d500",  _lst,FILTER(SHEETSNAME(,,1),ISNUMBER(FIND(_key,SHEETSNAME(,,1)))),  _data,DROP(REDUCE("",_lst,LAMBDA(_s,_d,VSTACK(_s,INDIRECT("'"&_d&"'"&_rngads)))),1),  _res,FILTER(_data,BYROW(_data,COUNTA)>0),  _res)


摊手,公式比较比较比较比较比较长亿点。


如果你是函数新人,只想吃鸡蛋不想开养鸡场,那公式直接拿去复制套用就可以了,你可能需要修改的有以下两个地方:


第2行代码定义了一个名称为_key的变量,本例内容为"月",可以根据实际需要修改成其它内容,例如"付款"。如果不是根据关键字筛选工作表,而是合并当前工作簿所有工作表的数据,可以把它设置为假空""。


第3行代码定义了一个名称为_rngads的变量,内容是需要合并工作表的单元格范围,本例为a2:d500,你也可以根据实际需要修改成其它内容,例如a2:g3000等。


……

以下是养鸡场的内容。


第4行代码定义了一个变量_lst,内容是筛选包含指定关键字的工作表名称列表。其中sheetsname函数的第3参数设置为1,这是为了当筛选关键字为空时,可以剔除公式所在工作表,避免计算错误。


第5行代码使用reduce函数迭代变量_lst内的每个工作表名称,其中使用indirect函数将对应工作表的单元格地址转换为实际单元格引用,将数据不断堆叠到结果数组中——这部分内容的详细解释,可以阅读往期推文 ▷ R E D U C E


第6行代码使用filter函数筛选剔除结果数组中整行为空白的记录。


……


两个例子举完了那就盖木欧瓦吧,有啥不明白的地方照例可以在会员微信答疑群中提问交流。挥挥手,下期再见。




需要系统学习Excel,却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?


加入我的付费社群,学习+训练+答疑,与6000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道


🚂>>~


加入我的付费会员,全面学习Excel

透视表 函数 图表 VBA PQ想学啥学啥

👀


本文由公众号“Excel星球”首发。

点击阅读原文系统学习Excel!

Excel星球
微软全球最有价值专家(Excel MVP),上千篇原创图文和视频教程随学随用,随用随查,建议常用Excel的职场人关注。
 最新文章