分享

用Excel函数造一个万能提取函数!

 Excel实用知识 2021-12-10

图片

非VBA,用Excel函数造一个自己的函数,如同编程,你想过吗?他可以提取汉字、字母、数值汇总任意指定的字符!

01 | 提取所有数值

正如你所见,我们只需要输入 =SuperGet(A4,'sz')

这里,我们 sz 就是shuzhi 的首字母! 

就可以提取文本中的全部数值,并且利用365的数组功能自动扩展功能,一次搞定!

图片

02 | 批量提取字母

有了上面的经验,这里我们只需要替换成zimu的 首字母 zm 即可!

=SuperGet(A5,'zm')

现在明白他为什么交SuperGet了吧!

图片

03 | 提取全部汉字

提取全部汉字,你可能想象不到,我们不借助VBA也可以实现吧!

这里如果你使用的是中文的符号,也会被提取,但是这点也是可以优化的!

=SuperGet(A4,'hz')

图片

好了,常用的三种提取我们就讲完了,但是这还没结束,我们还可以自己定义想提取的任意字符!

04 | 自定义任意提取

我们只需要在第二参数指定你要提取的字符即可!比如我们先提取数值+cm或者CM,那么可以写成下面这样。其他同理!

=SuperGet(A5,'-0.123456789cmCM')

图片

怎么样?还是很强的吧,但是我们说了,不需要使用VBA,Excel自己的函数就能造一个这样的万能提取函数!

下面是函数写法:有点长

=LAMBDA(y,x,
LET(
  a,MID(y,ROW(INDIRECT('1:'&LEN(y))),1),
  b, CONCAT(
      IF(x='hz',IF(LEN(a)<>LENB(a),a,' '),
      IF(x='zm',IF((UPPER(a)>='A')*(UPPER(a)<='Z'),a,' '),
      IF(x='sz',IF(ISNUMBER(FIND(a,-1/17)),a,''),
      IF(ISNUMBER(FIND(a,x)),a,' '))))
 ),
 c,LEN(TRIM(b))-LEN(SUBSTITUTE(TRIM(b),' ',''))+1,
 d,SUBSTITUTE(TRIM(b),' ',REPT(' ',99)),
 e,TRANSPOSE(TRIM(MID(d,99*ROW(INDIRECT('1:'&c))-98,99))),e)
)

需要版本支持LAMBDA、LET和CONCAT三个新函数!推荐加入预览的365版本使用!

如果使用-直接通过定义名称,后续调用!

图片

当然你也可以在上面长长的公式尾巴加上(A2,'hz')直接调用!

好了,今天的内容就到这里,前面我们分享过新增的方式,都可以编程了,今天算是一次事件,随着版本迭代,将会有很多以前不敢想的功能都可以通过函数直接完成!

记得阅读次条额,是本文涉及的三个函数的基础用法!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多