【发布时间】:2016-03-27 20:11:17
【问题描述】:
简介:我导出营销报告以获得点击率,这些报告提供了我公司网站上产品的 URL。我想要一个将产品标题显示为显示文本的列,同时将文本保持为超链接。这是为使用带有产品标题/超链接的列创建邮件合并的数据源。
我有一个像这样设置的 VBA 宏:
Sub ClickableLinkTitle()
'Dim List As Integer, result As String
'Range("$G$2:$G$158").value = List
'Range("$H$2:$H$158").value = result
Dim i As Long
Dim j As Integer
Dim value As String
j = 7
For i = 2 To Rows.Count
If Not IsEmpty(Cells(i, 6)) Then
value = Cells(i, 6).value
If value = "http://example.com/products/db.asp?prodID=1" Then
Cells(i, j).value = "Product 1"
ElseIf value = "http://example.com/products/db.asp?prodID=2" Then
Cells(i, j).value = "Product 2"
ElseIf value = "http://example.com/products/db.asp?prodID=2" Then
Cells(i, j).value = "Product 3"
'(ect....until Product 400-and-something)
End If
End If
Next i
End Sub
这会产生一个编译错误,说明过程太长。我已经把它分解成多个潜艇,但我不想继续这样做。它也非常手动,几乎违背了创建宏的目的。但既然我已经创建了它,并且建立了 url 和产品标题的关系,我不想把它扔掉。
问题:在我的公司网站上创建一个显示作为产品超链接的产品标题的列的最有效方法是什么?
头脑风暴: 从我的宏中提取 url 和产品标题并将它们放入两个单独的列中,然后找出一个宏来将两者结合起来。
Ping url 并从 html 标题标签中检索页面标题以显示为产品标题。
【问题讨论】:
-
我会尝试在该列中找到最后使用的行,而不是搜索工作表的整个 1048576 行。类似于
With Sheets("Sheet1") lastRow = .Range("F" & .Rows.Count).End(xlUp).Row End With -
value的选择案例也可能有帮助 -
@NinjaLlama 我真的不明白这会做什么?不过还是谢谢你的建议。
-
它将确定使用的最后一行,然后您可以在
For i = 2 To Rows.Count中使用该存储值,而不是循环直到 Rows.Count -
我在 F 列中添加了 40000 个条目,然后将您的代码与我的代码相匹配。我的建议将根据您实际拥有的数据行数而递减收益,但使用 40000 个条目,我的代码运行时间为 0.39 秒,而您的代码运行时间为 3.32 秒。