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
然后我只想要他的规格,也就是从后面倒着截取,截取到最后出现的数字应该就可以把,格式是固定的,能不能帮我写一下?

追答

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

如何用excel中的VBA的正则表达式提取出字符串?
1、首先打开需要编辑的Excel表格,进入到编辑页面中。2、然后点击打开主菜单栏开发工具中的“Visual Basic”选项。3、还可以鼠标右键单击工作标签,选择打开“查看代码”。4、然后在弹出来的窗口中点击输入:Function REFIND(str, re)Dim Reg As New RegExp With Reg .Global = True .Pattern = re S...

excel “vba”怎么截取字符串?
以下从一个单元格字符串中提取出连续出现的数字,并且空格分割,后面只需分列以下就提取到不同单元格了。函数代码如下:Function REFIND(str, re) Dim Reg As New RegExp With Reg .Global = True .Pattern = re Set matchs = .Execute(str) For Each Match In matchs y...

EXCEL VBA 截取字符串问题
=IF(COUNTIF(A1,"*"&B1&"*")=0,FALSE,TRUE)=IF(COUNTIF(A1,"*"&B1&"*"),TRUE,FALSE)

excel中vba提取字符串问题
Text 必需。包含要提取字符的文本字符串。Start_num 必需。文本中要提取的第一个字符的位置。文本中第一个字符的 start_num 为 1,依此类推。Num_chars 必需。指定希望 MID 从文本中返回字符的个数。说明:如果 start_num 大于文本长度,则 MID 返回空文本 ("")。如果 start_num 小于文本长...

Excel VBA 编程开发应用系列 (七)—字符串处理函数
首先,让我们了解字符串提取函数。Mid函数用于从字符串中提取任意长度的子字符串,其语法为Mid(String,Start[,Len])。如果字符串包含空值或Start超过字符串长度,函数将返回空字符串。Left函数则从字符串左边提取指定长度的子字符串,Right函数则从字符串右边开始提取。与Left和Right不同,Right函数从字符串...

excel中用VBA提取某一个单元格内包含某关键字符串的一行内容前的整数...
答:右键工作表标签,选择查看代码,复制下面代码进去。然后可以在B列输入关键字,就会得到结果。Private Sub Worksheet_Change(ByVal Target As Range) Dim Cell As Range Dim TempStr As String On Error Resume Next If Target.Column = 2 Then Set Cell = Cells(Target.Cells(1...

Excel利用自定义函数提取字符串中的重复字符
有时需要将Excel单元格内字符串中的重复字符提取出来,例如提取字符串“abcdeAbcDe”中重复的几个字符“bce”,如图所示,可以用自定义函数实现。1.按Alt+F11,打开VBA编辑器。2.单击菜单“插入→模块”,在代码窗口中粘贴代码:Function GetDupChar(theString As String) As String Dim i As Integer ...

EXCEL中用VBA提取特定条件的字符串?
arr)s = ""If arr(i, 1) <> "" ThenFor Each t In Split(arr(i, 1), Chr(10))j = InStr(t, "YY工厂")If j > 0 Then s = s & Mid(t, j + 5, Len(t)) & "->"Next tEnd IfIf s <> "" Then Cells(i, 2) = Left(s, Len(s) - 2)Next iEnd Sub ...

EXCEL怎么用VBA提取字符串?
可以使用函数提取一个字符串中的一段字符。 MID 用来返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定, 函数 MID 始终将每个字符。应该用到三个字符串函数:LEFT、RIGHT、MID LEFT函数用法:LEFT(要提取字符所在单元格,从左侧开始提取的个数)。RIGHT函数用法:RIGHT(要提取字符所在单元...

excel用自定义函数提取单元格内字符串中的数字
如果Excel单元格中包含一个混合文本和数字的字符串,要提取其中的数字,通常可以用下面的公式,例如字符串“隆平高科000998”在A1单元格中,在B1中输入数组公式:=MID(A1,MATCH(1,–ISNUMBER(–MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0),COUNT(–MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1...

相似回答