给大家介绍一下微软新出的TRIMRANGE函数

职场   2024-11-28 07:50   福建  

Hi,大家好,我是星光。

每隔一段时间,在会员微信群里,就会有不同的学员朋友问一个相同的问题,整列引用会不会拖累函数的计算速度?比如说,如下所示的VLOOKUP函数,它引用了A~C整列,会显著降低计算效率吗?

=VLOOKUP(E2,A:C,3,0)


摊手,如果你有看过我的函数系列教程的话,答案其实是显而易见的:不会


当第2参数查找范围为单元格引用时VLOOKUP函数有自我修剪功能,它会对查询范围做优化调整。简单而言,它会获取查询范围和工作表已使用单元格区域两者之间的交集

如上图所示的表格,虽然公式设置了查询范围是A~C整列,但它会自动调整为A1:C9单元格区域。

因此,查询范围使用整列引用并不会显著降低VLOOKUP函数的计算效率。

拥有类似VLOOKUP函数这种自我修剪引用区域的函数还有很多,大部分都是查询引用类函数,例如SUMIF(S)/COUNTIF(S)/INDEX/MATCH/XLOOKUP等等。

并不是所有的函数对整列引用都有自我修剪功能,特别是数组和迭代计算类型,典型如IF/SUMPRODUCT/FILTER/SORT(BY)/MAP/REDUCE等等……

另外,可能需要额外说明以下VLOOKUP函数公式也不具有自我优化功能。

=VLOOKUP(E2,IF({1,0},B:B,A:A),2,0)

这条VLOOKUP函数的第2参数查询范围看起来是单元格引用,但实际上却是数组运算,详情参考往期推文:「VLOOKUP函数的这个用法我建议你千万别用


……


1 丨 整列引用的优劣


整列引用有什么好处呢?

我举一个栗子。

=VLOOKUP(E2,$A$2:$C$9,3,0)

上面这个VLOOKUP函数的查询范围固定为A2:C9单元格区域。当新增一条记录到A10:C10单元格区域,如果不调整对应的查询范围,很明显就可能导致计算数据遗漏。



整列引用可以避免以上问题。它有一个非常巨大的好处,当数据新增或者删除时,不需要做额外的调整,毕竟无论数据增减,都还在整列之中。换而言之,整列引用变向起到了动态引用实际数据范围的效果

是,如果一个函数没有自我修剪引用区域的功能(类似VLOOKUP函数那样),通常我也不建议你使用整列引用。原因无它,计算冗余太多,计算效率实在太差了。1列有1048576个单元格,n列直接翻n倍,这体量Excel的小身板很难承重。


打个响指,更多的时候还是建议将计算范围设置到5000行左右,大部分朋友的Excel的数据量都不会超过这个数……对吧?


上图中所使用的FILTER函数如下,它的计算范围为A2:C5000。通常而言,在这个范围内,数据的新增和删除不会影响函数的正确运算,同时,计算效率也不会显著下降

=FILTER(A2:C5000,B2:B5000=F1)


3 丨 TRIMRANGE函数


前段时间,微软在Excel 365 的beta测试版本中发布了一个新函数,叫做TRIMRANGE。TRIM是修剪的意思,RANGE是单元格引用的意思,顾名思义,这个函数的作用就是修剪单元格引用的范围。

TRIMRANGE函数的基本语法如下:

=TRIMRANGE (引用区域、[删掉空行]、[删掉空列]) 

第1参数指定引用区域,第2/3参数指定修剪空行/空列,有以下4种删减方式。


0表示无删减。
1表示删减实际数据前面的空白行/列。
2表示删减实际数据后面的空白行/列。
3表示把实际数据前后的空白行都裁剪掉。
如果2/3参数全部省略,则表示删减引用区域周围所有的空白行列。

举寄个俺们大胡建的荔枝啦。

如下图所示,公式省略了第2和第3参数,则删除引用区域A:F列周围所有的空白行和列,返回实际数据区域B2:D11。

=TRIMRANGE(A:F) 


以下公式将第2参数设置为1,删掉B列前面的空行,返回引用区域B2:B1048576

=TRIMRANGE(B:B,1)

以下公式将第2参数设置为2,删掉B列后面的空行,返回引用区域B1:B11


=TRIMRANGE(B:B,2)

以下公式将第2参数设置为3,删掉B列前后的空行,返回引用区域B2:B11

=TRIMRANGE(B:B,3)

……


在实际应用中,使用TRIMRANGE函数删减行的情况最为常见。微软对此提供了语法糖,或者说简写形式,如下:


“B.:B” 在冒号前加一个小数点,表示删减实际数据前面的空白行

“B:.B” 在冒号后加一个小数点,表示删减实际数据后面的空白行

“B.:.B” 在冒号前后各加一个小数点,表示删减实际数据前后的空白行。


……

如你所想,TRIMRANGE函数的应用需求场景是显而易见的:准确引用动态的数据区域。换而言之,当你的实际数据范围不固定时,就应该立刻想起TRIMRANGE函数的好来。这就好像每当你和现在的她/他吵架时,就自然想起前任的好来


以FILTER函数为例,使用TRIMRANGE函数搭配整列引用,公式如下:

=FILTER(TRIMRANGE(A:C),TRIMRANGE(B:B)=F1)

换用语法糖,公式会简洁许多,如下:


=FILTER(A:.C,B:.B=F1)

……

打个响指,没了。右下角点个赞,挥挥手,咱们下期再见。


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


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


🚂>>~

超低价Excel终身会员:一次付费

永久迭代学习,学习问题永久答疑


扩展阅读



 Excel.VBA常用代码合集
 WPS.JSA宏常用代码合集
• 从Excel出发带你轻松学会SQL

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

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


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