从excel单元格/excel文件提取多个url地址
我在excel中有多个单元格,如下面的单元格,我想提取所有以“”开头的URLhttps://images" 在这张图片上,你可以看到我想要实现的目标。在左边的单元格中,我有一些URL,但当我调用函数时,我希望得到右边单元格的内容(所有以“https://images") 我通过编写=ExtrUrls(A14)从excel单元格/excel文件提取多个url地址,excel,regex,vba,excel-formula,Excel,Regex,Vba,Excel Formula,我在excel中有多个单元格,如下面的单元格,我想提取所有以“”开头的URLhttps://images" 在这张图片上,你可以看到我想要实现的目标。在左边的单元格中,我有一些URL,但当我调用函数时,我希望得到右边单元格的内容(所有以“https://images") 我通过编写=ExtrUrls(A14) 编辑-如果您只需要一个字符串,那么不需要创建数组,只需将每个M附加到一个字符串并返回该字符串即可。将函数返回类型更改为String而不是String() 函数ExtrUrls(作为字符串)
编辑-如果您只需要一个字符串,那么不需要创建数组,只需将每个M附加到一个字符串并返回该字符串即可。将函数返回类型更改为String而不是String()
函数ExtrUrls(作为字符串)作为字符串
尺寸rv作为字符串,sep作为字符串
Dim RE作为对象,MC作为对象,M作为对象
Const sPat As String=“https?:\/\/(images\)?[-a-zA-Z0-9@:%。[-a-zA-Z0-9]{1256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9á-249;-193-217()@:%。+.~\35;?&/=])”电子邮件的正则表达式
我想我会坚持多久
'初始化正则表达式引擎
Set RE=CreateObject(“vbscript.regexp”)
带RE
.Pattern=sPat
.Global=True
.IgnoreCase=True
如果是,则进行测试
设置MC=.Execute(S)
对于MC中的每M
rv=rv&sep&M
sep=“;””或任何您想要的分隔符
下一个M
如果结束
以
ExtrUrls=rv
端函数
当以数组公式(Ctrl+Shift+Enter)输入时,自定义项适用于一行单元格 如果从一列单元格中将其作为数组公式调用,则可以“翻转”数组:
函数extruls(s As String)'As String()
Dim sTemp()'作为字符串
Dim RE作为对象,MC作为对象,M作为对象
Const sPat As String=“https?:\/\/(images\)?[-a-zA-Z0-9@:%。[-a-zA-Z0-9]{1256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9á-249;-193-217()@:%。+.~\35;?&/=])”电子邮件的正则表达式
我想我会坚持多久
'初始化正则表达式引擎
Set RE=CreateObject(“vbscript.regexp”)
带RE
.Pattern=sPat
.Global=True
.IgnoreCase=True
如果是,则进行测试
设置MC=.Execute(s)
ReDim sTemp(1至MC.计数)
i=0
对于MC中的每M
i=i+1
sTemp(i)=M
下一个M
如果结束
以
'如果从一列单元格调用,则翻转数组
错误时继续下一步“忽略未作为UDF调用时的错误”
Set rng=Application.Caller
在出现错误时转到0'停止忽略错误
如果不是,那么rng什么都不是
如果rng.Rows.Count>1,则sTemp=Application.Transpose(sTemp)
如果结束
ExtrUrls=sTemp
端函数
你到底怎么称呼这个?当作为数组公式输入一行单元格时,它对我有效。它在一列单元格中不起作用,因为返回的数组是“错误的”。我通过write=extruls(A14)调用该函数。我尝试使用该函数,但仍然只得到一个url。。有没有办法将所有结果保存到字符串中,然后将该字符串返回到单元格?谢谢。如果您只需要一个字符串,那么不需要创建数组,只需将每个M
附加到一个字符串并返回该字符串即可。将函数返回类型更改为String
,而不是String()
<div id="images-gallery" class="slick-carousel slick-carousel-arrow-style-2" data-was-processed="true"><div class="gallery-thumb" data-src="https://images.mytestdomain.gr/image1.jpg" data-idx="1"><picture>
<source type="image/webp" srcset="https://cdn.mytestdomain.gr/photos/small/44x44-90_jpg/%CE%BA%CF%85%CF%84%CE%B4%CF%86.webp" media="(max-width: 768px)">
<source type="image/webp" srcset="https://cdn.mytestdomain.gr/photos/small/60x60-90_jpg/%CE%BA%CF%85%CF%84%CE%B4%CF%86.webp" media="(max-width: 1024px)">
img src="https://cdn.mytestdomain.gr/photos/small/105x105-90/%CE%BA%CF%85%CF%84%CE%B4%CF%86.jpg" alt="Oral-B 3D White Brilliance Οδοντόβουρτσα για Λευκά Δόντια 1 τεμάχιο" title="Oral-B 3D White Brilliance Οδοντόβουρτσα για Λευκά Δόντια 1 τεμάχιο" class="loaded" data-was-processed="true">
</picture></div><div class="gallery-thumb" data-src="https://images.mytestdomain.gr/3014260090890bbbbbbbbb.jpg" data-idx="2"><picture>
<source type="image/webp" srcset="https://cdn.mytestdomain.gr/photos/small/44x44-90_jpg/3014260090890bbbbbbbbb.webp" media="(max-width: 768px)">
<source type="image/webp" srcset="https://cdn.mytestdomain.gr/photos/small/60x60-90_jpg/3014260090890bbbbbbbbb.webp" media="(max-width: 1024px)">
<source type="image/webp" srcset="https://cdn.mytestdomain.gr/photos/small/78x78-90_jpg/3014260090890bbbbbbbbb.webp" media="(max-width: 1280px)">
<img src="https://cdn.mytestdomain.gr/photos/small/105x105-90/3014260090890bbbbbbbbb.jpg" alt="Oral-B 3D White Brilliance Οδοντόβουρτσα για Λευκά Δόντια 1 τεμάχιο" title="Oral-B 3D White Brilliance Οδοντόβουρτσα για Λευκά Δόντια 1 τεμάχιο" class="loaded" data-was-processed="true">
</picture></div></div>
Option Explicit
Function ExtrUrls(S As String) As String()
Dim sTemp() As String
Dim RE As Object, MC As Object, M As Object
Const sPat As String = "https?:\/\/(images\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9á-ùÁ-Ù()@:%_\+.~#?&//=]*)" 'Regex for emails
Dim i As Long
'Initialize Regex engine
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = sPat
.Global = True
.IgnoreCase = True
If .Test(S) = True Then
Set MC = .Execute(S)
ReDim sTemp(1 To MC.Count)
i = 0
For Each M In MC
i = i + 1
sTemp(i) = M
Next M
End If
End With
ExtrUrls = sTemp
End Function