我有一个 Excel 电子表格,其中大约有 900 个单元格,每个单元格包含一个 URL,是我从另一个程序粘贴过来的。
如果我选择一个单元格并点击F2,然后点击Enter,Excel 会向该单元格添加一个超链接,其地址就是单元格内容。
Excel 2010 中是否有一种机制可以对我的数百个单元格重复此步骤,而无需手动执行此F2 Enter步骤?
(我知道我可以在 AutoHotKey 中自动化,但我希望不需要这样做)
澄清:我特别想将超链接添加到我现有的单元格中,而不是创建包含超链接的第二列。
我尝试过的事情:
=Hyperlink(A1)
按照 user301746 的回答,在 内创建一个临时的额外列,A2
然后使用选择性粘贴首先复制并粘贴格式,然后将值复制到 上A1
。这似乎有效,因为 A1 等中的单元格显示为蓝色并带有下划线,因此它们看起来像超链接,但实际上并没有链接 - 它只是复制了超链接显示样式。
答案1
所以我找到了一个解决这个问题的作弊方法,我遇到了同样的问题,需要将大约 4000 个单元格转换为超链接
我将整列复制并粘贴到 google sheet 中,gsheet 自动将所有链接转换为活动链接,然后我从 gsheet 重新复制该列并将其粘贴回 excel 电子表格中。
答案2
作为 autohotkey 的替代方案,使用 vba 进行编码相当容易。以下代码将对 A 列中从第 2 行开始的所有单元格执行您想要的操作。
Sub add_links()
Dim lRow As Long
With ActiveSheet
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
For Each c In .Range("A2:A" & lRow)
ActiveSheet.Hyperlinks.add anchor:=c, Address:=c.Value
Next
End With
End Sub
答案3
您可以在 A2 中使用 =Hyperlink(A1) 来执行所需操作,然后使用单元格填充工具将其向下复制。
希望有所帮助。
答案4
@gtwebb 谢谢,这正是我需要的。
我稍微修改了一下以添加哪一列的输入
Sub add_links_Input_Column()
Dim lRow As Long
Dim ColHead As String
ColHead = InputBox("Enter Column Letter", "Identify Column", [c1].Value)
If ColHead = "" Then Exit Sub
With ActiveSheet
lRow = .Range(ColHead & .Rows.Count).End(xlUp).Row
For Each c In .Range(ColHead & "2:" & ColHead & lRow)
ActiveSheet.Hyperlinks.Add anchor:=c, Address:=c.Value
Next
End With
End Sub