将HYPERLINK() -转换为带有底层链接的文本



假设我有一个包含许多(数百)行的列,每一行都有一个HYPERLINK公式,例如

=HYPERLINK("https://npiregistry.cms.hhs.gov/registry/provider-view/99999", "99999")

如何将所有单元格转换为包含文本的单元格,但要使用底层链接(如CTRL-K),例如99999

谢谢!

经进一步调查,问题不是Excel for Mac的安全设置,而是超链接公式由2个单元格引用组成;显示文本和链接。

插入/替换超链接到单元格的VBA函数如下所示。

ActiveSheet.Hyperlinks.Add Anchor:=current_range, Address:=address_string, TextToDisplay:=display_string

在您的情况下,您必须替换VBA语法中的current_range, address_string和display_string。

在上面的例子中,由于我们使用For循环遍历selection中的所有单元格,所以可以将其保留为current_range

对于address_stringdisplay_string,您将为该函数提供电子表格上这两个单元格的位置。由于电子表格的地址字符串存储在两个单独的列中,因此您希望通过使用熟悉的单元格引用格式Range("$C")引用该列。,Current_range.row)格式,或使用offset方法,该方法涉及对列的索引进行计数。例如,current_range。抵消(0,-10)value。偏移量中的-10是您希望从current_range向左移动的列数。

注意,在单元格引用的后面添加.value是很重要的,这样它就可以获得存储在单元格中的数据(字符串),而不是单元格中的潜在公式。

创建宏

Sub convert_hyperlink_formula_to_hyperlink_cell()
Dim address_string As String, display_string As String
Dim current_range As Range
For Each current_range In Selection
address_string = Mid(current_range.Formula, 13, InStr(1, current_range.Formula, ",") - 14)
display_string = current_range.value
ActiveSheet.Hyperlinks.Add Anchor:=current_range, Address:=address_string, TextToDisplay:=display_string
Next current_range
End Sub

选择超链接公式的范围,然后运行宏。将超链接公式转换为实际的超链接单元格。

请尝试这个示例文件。

转换超链接样例文件。xlsm

我已经复制了你发布的公式,并在样本文件中粘贴了几行。宏已经在Excel文件中设置好了,供您测试。

对于那些不懂VBA/Macro的人来说,一种快速而肮脏的方法是使用Hyperlink函数复制列…并粘贴到Word中。然后粘贴回Excel。

效率高吗?没有。它有用吗?是的!

最新更新