如何在 Excel 的 CONCATENATE 函数中使用超过 255 个字符?我实际上也在 EXCEL 的 HYPERLINK 函数中使用 CONCATENATE 函数。一个例子如下:
=HYPERLINK(CONCATENATE("http://www.google/com/morethan255charsmorethan255charsmorethan255charsmorethan255charsmorethan255charsmorethan255charsmorethan255charsmorethan255charsmorethan255charsmorethan255chars","morethan255chars morethan255charsmorethan255charsmorethan255charsmorethan25"),"link");
更新:这不是 CONCATENATE 函数的问题,而是 HYPERLINK 函数的第一个参数的问题。直接/间接使用长度超过 255 个字符的字符串(例如:=HYPERLINK(K204,"link"),其中 K204 包含 256 个字符长度的链接)会使 HYPERLINK 功能失败
我意识到我可以使用 URL 缩短器,但我正在为大量链接执行此操作,这需要大量手动使用 URL 缩短器。
最佳答案
更新:由于 Karls 的评论,我重新审视了我的答案,发现 Excel 2007 似乎不再允许用户定义函数设置超链接(非常明智,请参阅代码中我自己的评论)。因此,原始代码(行下方)在更新版本的 Excel 中不起作用(我尚未测试 Excel 2010,但我假设结果是相同的)。由于历史原因,我不会删除旧代码(编辑者可能会有不同的想法——请随意编辑/删除相应的代码)。
所以剩下的是以编程方式设置长超链接,例如
Sub insertVeryLongHyperlink()
Dim curCell As Range
Dim longHyperlink As String
Set curCell = Range("A1") ' or use any cell-reference
longHyperlink = "http://www.veryLongURL.com/abcde" ' Or a Cell reference like [C1]
curCell.Hyperlinks.Add Anchor:=curCell, _
Address:=longHyperlink, _
SubAddress:="", _
ScreenTip:=" - Click here to follow the hyperlink", _
TextToDisplay:="Long Hyperlink"
End Sub
<小时/>
以下内容在 Excel 2010 中不再适用;看我上面的评论
“从 Word 复制超链接并粘贴到 Excel 中”让我思考。显然,限制在于内置的超链接功能和对话框窗口“编辑超链接”。另一方面,应该——而且实际上是——可以通过 VBA 设置更长的超链接。
此代码不再适用于 Excel 2010
Function myHyperlink(cell As Range, _
hyperlinkAddress As String, _
Optional TextToDisplay As Variant, _
Optional ScreenTip As Variant)
' Inserts a Hyperlink
' at the position cell (this should be the position where the UDF is used,
' since the return value of the UDF is = TextToDisplay)
' with the hyperlinkAddress
' optional TextToDisplay
' optional ScreenTip
' #######################################
' Warning Warning Warning Warning Warning
' #######################################
' 1) Since it is really bad practice to have a function perform procedural
' tasks, you should not do this.
' 2) You have no garantee, the link is updated when the value hyperlinkAddress changes
' USE AT YOUR ONE RISK AND ONLY IN CASE OF EMERGENCIES :-)
' If more than one cell is selected as target range,
' use the top left cell
Set cell = cell.Resize(1, 1)
If IsMissing(TextToDisplay) Then
TextToDisplay = hyperlinkAddress
End If
If IsMissing(ScreenTip) Then
ScreenTip = hyperlinkAddress & " - Click here to follow the hyperlink"
End If
cell.Hyperlinks.Add Anchor:=ActiveCell, _
Address:=hyperlinkAddress, _
SubAddress:="", _
ScreenTip:=ScreenTip, _
TextToDisplay:=TextToDisplay
' There doesn't seem to be another way to set TextToDisplay
myHyperlink = TextToDisplay
End Function
用作普通 Excel 函数,但请确保将当前单元格添加为第一个参数(即,将以下公式插入到单元格 A1 中)
=myHyperlink(A1,B1)
=myHyperlink(A1,B1,"TextToDisplay", "ScreenTip")
您既不能将公式拉下来,也不能将其复制到另一个单元格。如果这样做,则必须重新计算公式(无论是 ALT-CTRL-F9 还是 ALT-CTRL-SHIFT-F9,因为强制重新计算似乎都起作用),因此进入每个单元格,按 F2 激活它并按 Return 完成。
我希望我没有帮助您搞砸太多 Excel 工作簿。
编写一个显式启动的 VBA 可能更安全,该 VBA 会迭代列表并写入超链接。这样它们就可以重复使用并且没有任何功能。
问候 安德烈亚斯
关于excel - 超出 Excel 中的最大字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3893541/