ARTICLE · 1337570
学会Excel做出这么高级的查询表,5000的工资肯定不能少!
学会Excel做出这么高级的查询表,5000的工资肯定不能少!
有小伙伴在后台问了这么一个问题:她有一个有很多列标题的表,一共有36列标题5000行数据,表格太长了,数据也很大。 现在,想做一个查询表,根据自己的需求,自定义查询条件,自定义标题显示,怎么做呢? 就是:我不想显示那么多标题,我想显示哪个就显示哪个。 比如有36列标题,我只想显示其中7个标题,但这7个标题是哪7个,不确定,根据我的需求和心情来! 
这个需求,不确定的地方很多,一般用VBA做,比较好做,但她不用VBA,想用公式做,方便她后续修改维护。 今天我们来看一下,如何实现这个需求,如果你学会了,就去找老板涨工资,5000的工资哪里还压得住你。 
接下来,我们一步步讲解。这个需求用公式做比较麻烦,需要做一些准备工作 第一,准备一个标题设置区域 
可以新建一个表,也可以设置一个单元格区域。主要目的是让我们可以自由选择要显示的标题,和自定义标题要显示的格式。 要显示哪个标题,就在对应标题上打勾,并设置标题要显示的格式:文本、日期、数字; 第二,设置查询表格式结构 
我们设置两个查询条件: 1、任意选择查询的字段; 在第一步勾选显示的标题中,选择要查询的标题,比如民族,在关键字的地方,输入民族关键字,比如:汉; 2、写动态显示标题公式 在A5单元格,写公式: 
只显示打勾的标题,不勾选的,不显示。同时,可以用条件格式,设置查询字段的高亮显示。 
3、设置查询筛选公式 这个步骤是最复杂最难的地方。 在第一个数据显示单元格A6,写以下公式: 
你学会了吗? 若需要教程示例文件,关注公式号,发消息关键字:标题筛选 
视频演示:

点亮☆星标,不错过精彩分享




=LET(fld,标题设置!A2:A29,chk,标题设置!B2:B29,k,IF($C$3="",0,COUNTIF(chk,"√")),IF(k=0,"",INDEX(FILTER(fld,chk="√"),SEQUENCE(1,k))))


=LET(f,标题设置!A2:A29,c,标题设置!B2:B29,m,标题设置!C2:C29,sel,FILTER(f,c="√"),k,ROWS(sel),fmt,FILTER(m,c="√"),s,员工信息表!$A$2:$AB$91,h,CHOOSEROWS(员工信息表!$A$1:$AB$1,1),fc,XMATCH($C$3,h),hit,FILTER(s,ISNUMBER(SEARCH($F$3,CHOOSECOLS(s,fc))),"无记录"),d,CHOOSECOLS(hit&"",XMATCH(sel,h)),IF($C$3="","",IF(AND(ROWS(hit)=1,INDEX(hit,1,1)="无记录"),"无记录",MAKEARRAY(ROWS(d),k,LAMBDA(r,j,IF(INDEX(d,r,j)="","",IF(INDEX(fmt,j)="日期",TEXT(INDEX(d,r,j),"yyyy-m-d"),IF(INDEX(fmt,j)="数字",TEXT(INDEX(d,r,j),"0.00"),INDEX(d,r,j)))))))))

















































































