excel中vba提取字符串问题

就是我从一个表里已经get到了一个字符串的地址,然后呢,要求是让我读取其到地级市,然后把他的行政区划代码自动生成出来,因为不能放附件,我多放几张图片来解释。1.我写了一个方法,把要取得那个地址字符串传进来了,但是不会写正则表达式,vba基础都没学过,直接上手完全看不懂,做Java得。2.我这边是有一个全国行政区划的代码表的,只要你在方法里截取到地级市了,可以去另外一个sheet里匹配到那个我想要的行政区划代码,我现在截取不到地级市,因为有的时候会有自治区什么的不规律得省,或者天津市xx市这种,我就做不到,请大佬帮帮忙

可以使用函数提取一个字符串中的一段字符。

MID 用来返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。
函数 MID 始终将每个字符(不管是单字节还是双字节)按 1 计数。

语法:
MID(text, start_num, num_chars)
参数:
MID函数语法具有下列参数:
Text 必需。包含要提取字符的文本字符串。
Start_num 必需。文本中要提取的第一个字符的位置。文本中第一个字符的 start_num 为 1,依此类推。
Num_chars 必需。指定希望 MID 从文本中返回字符的个数。

说明:

如果 start_num 大于文本长度,则 MID 返回空文本 ("")。
如果 start_num 小于文本长度,但 start_num 加上 num_chars 超过了文本的长度,则 MID 只返回至多直到文本末尾的字符。
如果 start_num 小于 1,则 MID 返回错误值 #VALUE!。
如果 num_chars 是负数,则 MID 返回错误值 #VALUE!。
如果 num_bytes 是负数,则 MIDB 返回错误值 #VALUE!。

示例:
数据 "Fluid Flow " 假设在A1单元格。
=MID(A2,1,5) 上面字符串中的 5 个字符,从第一个字符开始 (Fluid) 。
=MID(A2,7,20) 上面字符串中的 20 个字符,从第七个字符开始 (Flow) 。
=MID(A2,20,5) 因为要提取的第一个字符的位置大于字符串的长度,所以返回空文本 ()。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-08
mid(源字串,起始位号x,提取长度m);返回第x位起m个字符。要求:起始位号+提取长度<=源字串长度+1
left(源字串,左侧截取长度x);返回左侧x个字符
right(源字串,右侧截取长度y);返回右侧y个字符
instr(源字串,待查找子字串u);返回子字串首字符在源字串中的起始位号
chr(65);返回字母A
......本回答被网友采纳
第2个回答  2019-05-08
这个用正则是没法写的,只能把市级的名称做成一个数组,然后逐个匹配查找,用instr
例如:数组a(1 to 100)存放地级市的名称,例如 青岛,烟台等
for 1=1 to 100
if instr(dizh,a(i))>0 then
xx=a(i)
exit for
end if
next i追问

这个问题已经找大佬帮忙解决了,现在还有个问题需要您帮一下,也是一个字符串,就是商品名称后面会带上它的规格,我现在要提取出他的规格,应该怎么去实现?
例子 1 药品是商品名称加后缀xxx粒/瓶 阿莫西林胶囊12粒/盒
2 化妆品 是后面加g 欧莱雅美白霜80g
然后我只想要他的规格,也就是从后面倒着截取,截取到最后出现的数字应该就可以把,格式是固定的,能不能帮我写一下?

追答

这个要用正则了
数字+字符“粒” 或其他,要看数据然后定正则的规则

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网