问题来源
    最近在整理未决案件EXCEL表时遇到一个问题,想实现对表中某列中几个字符实现排序,举个形象的例子:如果想对(保单号)列实现按(机构代码)排序,该如何操作呢?如果是车险,那还好,最多只存在不同年限间错位;但如果是非车险,那就麻烦了,因为他们的险种代码特别多,在排序时会按照险种代码的字母顺序排。
问题分析
    大家都知道业务系统中,投保单、保单、批单、立案、计算书等等22位的单号中9-14位代表机构代码,因此要实现按机构代码排序可考虑对9-14位实行排序。
解决方案
    有没有办法实现取列中某位字符呢,回答是肯定的。EXCEL计算功能相当强大,大家遇到问题时不妨多看看EXCEL自带的帮助,里面有详细的介绍。最后我选择了MID函数来取列中字符,我尝试在排序时关键字直接输入此函数,但没有成功,有兴趣的可以试试,如果直接能输入函数关键字那就省事了。后来我的办法是新增一列,列值等于MID(),然后在按此列进行排序(如果将来不需要此列内容,排序后删除即可,有点过河拆桥的味道吧)。说到这里大家应该都很清楚了,下面给大家介绍一下可能不太熟悉的MID函数,其实很简单易用,跟大家熟悉的SUM差不多。
下面介绍EXCEL中的MID函数如下:
MID 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。
MIDB 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。此函数用于双字节字符。
语法
MID(text,start_num,num_chars)
MIDB(text,start_num,num_bytes)
Text   是包含要提取字符的文本字符串。
Start_num   是文本中要提取的第一个字符的位置。文本中第一个字符的 start_num 为 1,以此类推。
Num_chars   指定希望 MID 从文本中返回字符的个数。
Num_bytes   指定希望 MIDB 从文本中返回字符的个数(按字节)。
说明
  • 如果 start_num 大于文本长度,则 MID 返回空文本 ("")。
  • 如果 start_num 小于文本长度,但 start_num 加上 num_chars 超过了文本的长度,则 MID 只返回至多直到文本末尾的字符。
  • 如果 start_num 小于 1,则 MID 返回错误值 #VALUE!。
  • 如果 num_chars 是负数,则 MID 返回错误值 #VALUE!。
  • 如果 num_bytes 是负数,则 MIDB 返回错误值 #VALUE!。
示例 (MID)
如果您将示例复制到空白工作表中,可能会更易于理解该示例。
 
1
2
A
数据
Fluid Flow
公式说明(结果)
=MID(A2,1,5)上面字符串中的 5 个字符,从第一个字符开始 (Fluid)
=MID(A2,7,20)上面字符串中的 20 个字符,从第七个字符开始 (Flow)
=MID(A2,20,5)因为要提取的第一个字符的位置大于字符串的长度,所以返回空文本 ("")
示例 (MIDB)