本来以为Excel提供现成的函数来提取单元格的超链接,但似乎并没有。
在网上查到以下一段代码,用是可以用,但是效率比较低(不到500行数据,大概要等待数十秒才能出结果)。
Sub ExtractHL()
Dim HL As Hyperlink
For Each HL In ActiveSheet.Hyperlinks
HL.Range.Offset(0, 1).Value = HL.Address
Next
End Sub
好吧,该到发挥自己的VBA编程技能的时候了,通过将超链接先保存到数组,最后统一赋值给单元格,瞬间即可执行完毕。
当数据量比较大时(上万行甚至几十万行),两种方法的执行效率将会有天壤之别。
分享代码如下:
Sub 提取链接()
Dim ArrayHL(0 To 500, 0 To 1) As String
Dim i As Integer
Dim usedRows As Integer
usedRows = Worksheets("Excel函数").Range("A1048576").End(xlUp).Row
For i = 1 To usedRows - 1
ArrayHL(i - 1, 0) = Range("C" & i + 1).Hyperlinks(1).Address
Next
Worksheets("Excel函数").Range("D2").Resize(usedRows - 1, 1).Value = ArrayHL
End Sub
提取结果如下所示: