我有一个VBA问题,可以为一系列单元格创建超链接。
在我的应用程序中,我有一个数据表,其中一列列出了我想要添加超链接的ID,以打开该ID的相应报告/页面。
在以下所有情况下,假设所有单元格都填充了数字ID。
我目前使用的代码非常类似于以下内容(本例简化):
Dim r As Range, c As Range
Set r = Range("C1:C60000")
For Each c In r
ActiveSheet.Hyperlinks.add anchor:=c, address:="http://www.url.com?address=" & c.value
Next c
但是,随着范围变大 - 此代码执行的时间变得非常长。在URL始终相同的情况下,以下代码运行得非常快。
Dim r as Range
set r = Range("A1:A60000")
r.Hyperlinks.add anchor:=r, address:="http://www.url.com"
我的问题是,当URL不同时,特别是如果它们合并来自单元格的数据,那么有一种方法比我目前正在做的更有效。
任何帮助或见解将不胜感激。 谢谢,
示例数据(以CSV格式和Excel表格截图),我需要能够以" http://www.urltest.com/sample?id=[ID]"的格式向整个第一列添加超链接。其中[ID]是单元格中的值。
答案 0 :(得分:5)
我能想到的最快方法是使用HYPERLINK
函数并一次性将值分配给所有单元格:)这也确保您将不强>必须循环。
Hyperlink的语法是
HYPERLINK(link_location,[friendly_name])
在Excel帮助或Google中了解它。
ADDRESS(ROW(),COLUMN()))
为您提供当前单元格的地址。
试试这个
Sub test_simple_diffurl()
Dim r As Range
Set r = Range("C1:C60000")
r.Formula = "=HYPERLINK(""http://www.url.com?address="" & ADDRESS(ROW(),COLUMN()),""Test with "" & ADDRESS(ROW(),COLUMN()))"
End Sub