Excel VBA之函数篇-3.11订单号千奇百怪,如何按照中文,数字,英文来区分?
Excel VBA之函数篇-3.11订单号千奇百怪,如何按照中文,数字,英文来区分?
前景提要
随着经济水平的不断的提高,现在很多的外资企业都已经来到中国开厂和中国公司打交道做生意了,而很多公司为了适应各种不同的市场,也是开发了各种不同的业务,这些业务很多都是通过订单号的形式存在于工作账务上的,看起来业务是很多,但是后期核对账务的事后就非常的麻烦,有的订单号含有英文的,一般都是外资企业的,有些订单号都是数字的,一般都是内部订单号的,还有一些订单号可能含有中文字符的,千奇百怪的,那么我们要如何通过中文,数字,英文的方式来区分订单号呢?
函数说明
这样的情况,其实我们可以通过like()函数来实现的,like在英文中的意思就是像,并不一定是完全像,有点模糊的意思,而在VBA中,like()函数其实就是模糊匹配查找的意思,通过给与某种条件,只要能够达到这个标准的,都算是符合的,延伸下,我们可以判断订单中是否含有中文,英文或者数字就可以区分了,那么中英文,以及数字要如何通过like()方法来区分呢?
学过一些正则表达式的童鞋应该有点印象,[一-龥]代表的就是中文字符的意思,[a-zA-Z]代表的就是英文字符的意思,[0-9]很简单,代表的就是数字的意思,但是光看着这些似乎非常的难以理解,我们还是通过几个实例来说明下吧。
上代码
假设我们当前的数据模块是这样的,订单号有各种不同的样式,中英文数字混杂的,假设含有英文的都是国外订单,含有中文的就是国内订单,纯数字的就是自己员工内部内销的订单,我们尝试下通过订单的不同组合来区分订单的不同来源。
Sub test()
Dim i
For i = 2 To 11
If Cells(i, 1).Text Like "*[一-龥]*" Then
s = "国内订单"
ElseIf Cells(i, 1).Text Like "*[a-zA-Z]*" Then
s = "国外订单"
ElseIf Cells(i, 1).Text Like "*[0-9]*" Then
s = "内部订单"
End If
Cells(i, 2) = s
Next i
End Sub
运行的结果
准确的通过订单号的组合,将订单按照不同的来源区分出来了,初步达到了我们想要的效果。
代码解析
这里我们可以看出来代码是非常的简单,因为我们是第一次接触like()函数,暂时我们先掌握如何通过订单号的组合来区分订单来源,其实方法非常的简单,只需要继续中文,英文,和数字的三种方法的写法就可以了,我们来看看中文的,
Cells(i, 1).Text Like "*[一-龥]*" Then
[一-龥],很多人肯定会疑惑最后一个字不认识,其实不要紧,你可以选择直接复制粘贴的,如果你真的记不住,这里也可以将最后一个字改成乌龟的龟,也是一样能够实现的,因为日常汉子很少有生僻字的,替换成为龟,也可以实现这样的效果
英文
Cells(i, 1).Text Like "*[a-zA-Z]*"
这里就比较好理解了,从小写到大写全部写一遍就可以了,这样就代表了英文26个字母的全体,在案例中我们留意到第6个订单号是英文小写开头的,其他的都是英文大写开头的,从结果来看,不管是大小写都能够取分
最后一个数字就更加简单了
Cells(i, 1).Text Like "*[0-9]*"
阿拉伯数字过一遍就可以了。
完整代码及注释
Sub test()
Dim i
For i = 2 To 11
If Cells(i, 1).Text Like "*[一-龥]*" Then '判断是否含有中文
s = "国内订单"
ElseIf Cells(i, 1).Text Like "*[a-zA-Z]*" Then '判断是否含有英文
s = "国外订单"
ElseIf Cells(i, 1).Text Like "*[0-9]*" Then ''判断是否含有数字
s = "内部订单"
End If
Cells(i, 2) = s
Next i
End Sub
好了,明晚19:00,准时再见。