本文用自定义函数的形式拆分WPS工作表,用名称管理器定义好函数table_split后,可很方便的对任意工作表按任意列拆分,同时选择除第一个工作表的剩下工作表,在A1单元格输入=table_split(2,a1),即可把原始表按第二列拆分到各分表,如图所示:




多余的工作表不显示内容。
具体实施:
如图,将要拆分的工作表放到工作簿第一的位置,在第一个工作表后建若干个需要存拆分结果的工作表。

然后在名称管理器中定义一个table_split函数:
=LAMBDA(c,dyg,
IFERROR(LET(org_sht,INDEX(SHEETSNAME(),1),
bth,INDIRECT("'"&org_sht&"'!a1:z1"),
title,FILTER(bth,bth<>""),
cls,COLUMNS(title),
a_lst,INDIRECT("'"&org_sht&"'!a2:a2000"),
a_list,FILTER(a_lst,a_lst<>""),
rs,ROWS(a_list),
org_sht_area,INDIRECT("'"&org_sht&"'!a2:"&ADDRESS(rs+1,cls)),
c,IF(ISTEXT(c),MATCH(c,title,0),c),
filt_col,CHOOSECOLS(org_sht_area,c),
filt_item,SORT(UNIQUE(filt_col)),
sht_num,MATCH(SHEETSNAME(dyg),DROP(SHEETSNAME(),,1),0),
IF(sht_num<=ROWS(filt_item),VSTACK(title,FILTER(org_sht_area,filt_col=INDEX(filt_item,sht_num))),"")),
"请输入正确列序号或列标题,标题要带英文双引号"))
此函数有两个参数,第一个参数为要拆分的列,可以是数字形式,也可以是标题形式,注意标题形式要带英文双引号,第二个参数为任意单元格的相对形式,比如A1,本来在let里写函数的时候笔者是直接写sheetsname(a1)的,在let里测试正常,但到名称管理器里会出错,笔者只好把这部分设为第二参数。
夜雨聆风