请问如何在excel中提取某列内容里面带《书名》内的"书名”一个个提取出来?

就是把EXCEL表格某列内容里面的《书名》内的“书名” 一个个分别提取出来!
举例:内容内容内容《书名1》内容内容《书名2》
提取出:书名1,书名2

第1个回答  2015-05-26
=MID(A8,FIND("《",A8,1),FIND("》",A8,1)-FIND("《",A8,1)+1)追问

只能抓取一个,一篇文章多个《》,要抓取怎么办?VBA了··这个怎么用?

追答

这个不是vba啊,就是个简单的公式而已,很简单的,把A8改成你的文本所在的单元格就行了。

追问

是的!我测试了,只能抓取一篇文章里面一个《》 这篇文章如果有多个《》 就抓取不到剩下的,不过还是非常感谢

追答

Public Function getid1(i As Range)
Dim zhengze As Object
Dim matcharr As Object
Dim match As Object
Set zhengze = CreateObject("vbscript.regexp")
zhengze.Global = True
zhengze.Pattern = "《.{1,10}》"
Set matcharr = zhengze.Execute(i.Text)
len=UBOUND(matcharr)-LBOUND(matcharr)+1
t=""
for i =0 to len-1
t=t & ";" & matcharr(i)
next
getid1 = t
End Function

这里的10可以修改为书名的最长长度。

追问

非常感谢,不过我测试运行不了~是不是代码写错了?

追答

不好意思,代码修改好了,经过测试可用。
Public Function getid1(i As Range)

Dim zhengze As Object
Dim matcharr As Object
Dim match As Object
Set zhengze = CreateObject("vbscript.regexp")
zhengze.Global = True
zhengze.Pattern = "《.{1,10}》"
Set matcharr = zhengze.Execute(i.Text)
t = ""
n = matcharr.Count
For m = 0 To n - 1
t = t & ";" & matcharr(m)
Next
getid1 = t
End Function

追问

输入了,宏名称里面没有找到相关模块和名称!我是按照你上面提供的复制黏贴进去的!~是不是还要修改什么代码,我对这些也是第一次用!

追答

代码复制到模块中之后,就可以把getid1当做一个函数使用了。
就是在你的单元格里输入=getid1(A1)回车,就可以了

本回答被提问者和网友采纳
相似回答