应用3  VBA中字符串值的比较方案

大家好,对于职场中和数据打交道较多的学员,学习、利用VBA本身就是工作中的一件乐事,将大量的手工操作交给计算机自己去完成,收获的是效率的提高,以及工作后大量的宽裕的实间。这讲给大家讲解一个实际的VBA利用场景,并加以总结。在利用VBA处理实际问题中最为常见的一类是值的比较判断。当数据的值满足某种条件时让程序做相应处理,当不满足时做其他处理,这种逻辑是贯穿于整个代码过程的基本逻辑思路,这个专题我们就来讲解一下VBA中有关值的比较判断方案。

实例一:利用Instr函数检查单元格是否包含给定值

在下面的示例中,我们将使用Instr()来检查单元格是否包含"VBA"一词。我们将使用Do Loop循环浏览工作表A列中的所有单元格,并检查每个单元格。

下面看我给出的代码:

Sub mynzA()
    R = 1
    '循环到末行
    Do While Range("A" & R) <> ""
     Range("B" & R) = ""
        '如果A列单元格含有VBA,在B列写入"找到VBA"
        If InStr(1, Range("A" & R), "VBA") Then
            Range("B" & R) = "找到VBA"
        End If
        R = R + 1
    Loop
End Sub

代码截图:

vba linest 函数 vba中instr函数举例_VBA

代码解读:

①Range("B" & R) = ""是将原有数据删除;

②If InStr(1, Range("A" & R), "VBA") Then也可以这样写:If InStr(1, Range("A" & R), "VBA") >0 Then

代码运行的结果:

vba linest 函数 vba中instr函数举例_vba linest 函数_02

实例二:Instr函数如何匹配大小写

仍是这个Instr函数,我们将上面的代码改成:If InStr(1, Range("A" & R), "vbA") Then

结果会是怎么样呢?我们看下面的代码运行效果截图:

vba linest 函数 vba中instr函数举例_大小写_03

没有找到,这是为什么呢?因为上面的值匹配的是"vbA",在A列的单元格中没有找到匹配的"vbA"。对于要满足忽略大小写匹配,代码该如何写呢?下面看我给出的代码:

Sub mynzC()
    R = 1
    '循环到末行
    Do While Range("A" & R) <> ""
     Range("B" & R) = ""
        '如果A列单元格含有VBA,在B列写入"找到vbA"
        If InStr(1, Range("A" & R), "vbA", vbTextCompare) Then
            Range("B" & R) = "找到VBA"
        End If
        R = R + 1
    Loop
End Sub

代码截图:

vba linest 函数 vba中instr函数举例_数据_04

下面看代码的运行效果:

vba linest 函数 vba中instr函数举例_VBA_05