Excel 2010 VBA 入门 047 判断某文本中是否包含指定字符(Instr)

这篇博客介绍了如何使用VBA的Instr和InstrRev函数来检查文本中是否包含特定字符。通过举例说明如何筛选出包含特定词汇的供应商记录,解释了这两个函数的用法和参数含义,帮助用户理解VBA中的文本搜索技巧。

示例

    如图所示,该表为某公司采购清单。由于在记录时并未标记供应商来源地,只能通过E列供应商名称中寻找。现需要筛选出所有上海的供应商采购记录,该如何用VBA实现?

商品编码入库日期部门业务员供应商数量单价金额
GXGY0232009/1/1采购部刘清上海照明公司20041.888376.07
GXGY0242009/1/1采购部刘清上海照明公司10023.932393.16
QDJC0222009/2/20采购部刘清天津气动有限公司2018.8376.07
qdjc0232009/2/20采购部刘清天津气动有限公司1330.77330.77
QDJC0282009/2/20采购部刘清天津气动有限公司2012.82256.41
SBCS0012009/2/16市场部杨洪兴宁夏输送设备公司620000120000
GXGY0252009/2/16市场部张精南京电子有限公司17538.466730.77
SBKY0022009/2/20采购部马一鸣安徽中国工厂413490.0853960.3
SBKY0032009/2/20采购部马一鸣安徽中国工厂78547.2559830.74
SBLG0012009/2/20采购部马一鸣安徽中国工厂33046.159138.46
SBQG0012009/2/20采购部马一鸣安徽中国工厂71609.2611264.85
SBKY0012009/2/20采购部马一鸣安徽中国工厂417094.0268376.07
JXBL0012009/4/28采购部刘清天津市装饰经营部5011.4570
JXBL0022009/4/28采购部刘清天津市装饰经营部4011.4456
GXGY0322009/4/28采购部刘清上海照明公司5024.791239.32
GXGY0162009/4/28采购部刘清上海照明公司5039.321965.81
GXGY0272009/4/28采购部刘清上海照明公司10035.93589.74
GXGY0172009/4/28采购部刘清上海照明公司5045.32264.96
GXGY0282009/4/28采购部刘清上海照明公司5045.32264.96
GXGY0292009/4/28采购部刘清上海照明公司5045.32264.96
GXGY0302009/4/28采购部刘清上海照明公司20046.159230.77
GXGY0332009/4/28采购部刘清上海照明公司10035.93589.74
GXGY0312009/4/28采购部刘清上海照明公司5049.572478.63
QDQG0052009/4/28采购部刘清天津ACCP(中国)公司51495.737478.63
GXXJ0062009/4/28研发部林秋雨天津市器材有限公司75752.1456410.26
SBBJHY0012009/4/28采购部刘清天津市轴承销售有限公司602.99179.49
SBBJHY0022009/4/28采购部刘清天津市轴承销售有限公司10462.562682.05

 

实现代码

Option Explicit

Sub 筛选包含某字符的记录()
    Dim rown As Long
    '显示所有记录
    Cells.Rows.Hidden = False
    For rown = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        If InStr(1, Cells(rown, "E").Value, "上海") = 0 Then
            '不含“上海”则隐藏
            Rows(rown).Hidden
        End If
    Next
End Sub

Instr函数

    判断某个文本(字符串)中是否包含某字符时,除了可以使用Like运算符(或者工作表函数Find外,在VBA中还提供了另一个函数Instr。当文本中包含某个字符时,Instr返回该字符所在位置的序号,若不包含,则返回0。Instr函数的语法为

InStr([start,] stringl,string2 [,compare ])
  •     参数start表示查找的起始位置,该参数可以省略,然而当指定了compare参数时,该参数必填。
  •     参数string1表示被搜索的文本(字符串),即在哪里查找。
  •     参数string2表示需要查找的字符。
  •     参数compare为字符串的比较方式,当该参数省略时,则比较方式为Option Compare语句所指定的比较方式。该参数可以为表中的任意常量。

compare参数

    常  量

   

    说  明

vbUseCompareOption

-1

使用Option Compare语句设置执行—个比较

vbBinaryCompare

0

执行一个二进制比较

vbTextCompare

1

执行一个按照原文的比较

vbDatabaseCompare

2

仅适用于Microsoft Access,执行一个基于数据库中信息的比较

InstrRev函数

    Instr函数是以从左至右的方向在接受搜索的文本(字符串)中查找是否包含某字符,VBA还提供了一个类似的函数InstrRev。该函数以从右至左的方向进行搜索,其语法为

InstrRev(stringl,string2 [,start [,compare])
  • 参数stringl表示接受搜索的文本(字符串),即在哪里查找。
  • 参数string2表示需要查找的字符。
  • 参数start表示接受查找的文本从string1开始至第几位,若省略或者设置为-1,则表示查找整个string1。如以下表达式中,设置了start参数为4,由于string1的前四位为"1234”,在该文本(字符串)内找不到5,因而返回0。
InstrRev("12345","5",4)
  •  参数compare为字符串的比较方式,当该参数省略时,则比较方式为Option Compare语句所指定的比较方式。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值