marquee 循环显示变量_如何提取指定开头和结尾的字符串并以三种形式显示结果?...

1、 题目

如下图所示,"要求:提取开头为华南和华东和东北,结尾为一部、三部和五部的部门,并按如下三种方式分别显示结果:

1. 与目标单元格同行对应显示。

2. 独立集中显示。

3. 阶梯状显示。

083bf674754ab07eb4e611065e9edea5.png

2、 解题思路

1. 先看Patttern属性,从题目要求来看,如果要筛选开头和结尾指定的目标字符串且并不是唯一,那就需要用到"或"元字符,即|。又因为开头和结尾的中间部门存在多个多个字符,故此需要用到任意院子和>=1的量词,即.+,或.{1,}.

2. 若要与目标单元格同行对应显示,就需要首先获取目标单元格的行号,对此我们可以设置rng变量,将rng多为结果所在单元格的行号就行了,即cells(rng.row,2),2指第二列。

3. 若要实现独立集中显示,就需要显示结果由自己独立的行列号,故此不能使用rng变量,对此我们可以借助foreach遍历中使用N变量,将他作为结果单元格的行号,即可自上而下逐行显示,即cells(n,3),3指第三列。

4. 若要阶梯状显示,就需要行列号都随N的变化而同步变化,只需要用n+1作为列号即可逐列显示,即cells(n,n+1)。

三 、VBE窗口

3ef112d512905b3cfd654519e47774b8.png
c2025718e4765f9c56ac2f2ade45b17c.png
b2e6825392adf4528abe8d44d7efe7b7.png

4、 代码分享

'与目标单元格同行对应显示结果

Sub 按照开头和结尾的要求提取字符1()

Dim regx As Object, rng, mat, k, n%

Set regx = CreateObject("Vbscript.regexp")

With regx

.Global = True

.Pattern = "^(华南|华东|东北).*(一部|三部|五部)$"

For Each rng In [a1:a25]

Set mat = .Execute(rng)

For Each k In mat

n = n + 1

Cells(rng.Row, 2) = k

Next

Next

End With

End Sub

第二种和第三种只需要改一下行列号即可。

5、 总结

1. N=n+1的意思是每一次n+1的结果都作为下一次加数n,这样就实现了一种循环,如果不对n值设初值,默认n=0, 当n=0时N=1。

2. +1作为等差值,可以根据需要修改。

3. 这种等式多用在foreach、doloop等循环语句中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值