excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel VBA自定义函数iMid/Excel公式函数/Mid

本文于2023年3月8日首发于本人同名公众号:Excel活学活用,敬请关注

Excel里有很多字符串处理函数,如Left,Right,Mid,这些函数在VBA里也有,用法也基本相同。今天主要来谈一谈Mid函数的用法(下图是我自定义的iMid函数演示)。

基本语法:MID(text, start_num, num_chars)

其中,"text"是要从中提取字符的文本字符串,"start_num"是要提取的第一个字符的位置,"num_chars"是要提取的字符数,"start_num"参数从1开始。

这些基本的东西没啥好说的,对付一些简单的字符提取没有问题,但稍微复杂一些的情况就有点麻烦了,比如下面一个字符串,我们称它为“Item”:

“【XJ:支付的职工薪酬】【BM:行政部】【QT:其他项目】”

我要提取出如下表格式的字符串:

如果在Excel工作表里,我们用Mid函数来做:

项目1公式:算了,我不想烧脑了,有哪位高人感兴趣的可以试试,我就给它来个自定义函数吧:

Function iMid(wholeStr As String, startStr As String, endStr As String, Optional iType As Integer = 0)    Dim StartPosition As Integer   '开始位置,startStr首字符位置    Dim EndPosition As Integer     '结束位置,endStr末字符位置    If iType = 0 Then        '包含首尾字符        StartPosition = InStr(wholeStr, startStr)        EndPosition = InStr(StartPosition, wholeStr, endStr) + Len(endStr) - 1    ElseIf iType = 1 Then        '不包含首尾1个字符        StartPosition = InStr(wholeStr, startStr) + 1        EndPosition = InStr(StartPosition, wholeStr, endStr) + Len(endStr) - 2    Else        '不包含首尾字符        StartPosition = InStr(wholeStr, startStr) + Len(startStr)        EndPosition = InStr(StartPosition, wholeStr, endStr) - 1    End If    iMid = Mid(wholeStr, StartPosition, EndPosition - StartPosition + 1)End Function

简单解释一下:

首先看我们的“Item”字符串,它是有规律的:每一个小项目都是用中文方括号【】括起来的,开头是“【”+“项目代码”+“:”,所以我们来描述一下需求:

项目1:取出以“【XX:”开头,以“】”结尾的字符串,包括开头和结尾字符。

项目2:取出以“【XX:”开头,以“】”结尾的字符串,不包括开头和结尾各一个字符。

项目3:取出以“【XX:”开头,以“】”结尾的字符串,不包括开头和结尾的字符。

函数代码实际上也是用了Mid函数,根据不同需求来决定:

"start_num","end_num"(结尾字符位置),"num_chars",这些参数的值,然后再通过Mid函数来取得结果。

题外话,在写今天的分享文的时候,iMid函数还不存在,先前我是把每一个项目写了一个函数,但今天我在写的时候,感觉应该可以合并成一个函数,只要在函数的参数里加上一个type来决定取哪种结果,于是就诞生了iMid。

那么,这个函数如何使用呢?

功能:根据给定的首尾字符来截取首尾字符之间的字符,根据iType的值来决定输出结果:

1、默认是0,输出包含首尾字符之间的字符串,包含首尾字符;

2、iType=1,输出包含首尾字符之间的字符串,去掉首尾各一个字符

3、iType=2或其他整数,输出包含首尾字符之间的字符串,不包含首尾字符。

另外,该自定义函数要求第2个参数startStr,即首字符是唯一的,否则不能取得正确结果。

最后,由于时间仓促,未及全面测试,可能存有BUG,请谨慎使用,欢迎提出宝贵意见!

好了,今天就分享到这里,希望对你能有所帮助,感谢阅读!

网址限制,示例文件请至公众号查看!
本文使用 文章同步助手 同步,于2023年3月8日首发于本人同名公众号:Excel活学活用,敬请关注

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接