excel - 超出 Excel 中的最大字符限制

标签 excel function

如何在 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/

相关文章:

list - 模拟 Length 函数以获取列表的长度

Jquery 定义一个函数并将其作为所选对象的方法调用?

C# 和 Excel,按名称选择列并获取最高值

c# - 使用 C# 以编程方式将查询表从 MS Access 导出到 Excel

javascript - 为什么 JavaScript "this"在 Node 和 Browser 环境中返回不同的值?

PHP 在函数外部回显数组

mysql - 无法在 MySQL 中创建函数

javascript - 将数据从 HTML 表导出到 Excel 时排除特定列

parsing - Excel vba解析公式

excel - 强制另存为,MS Excel VBA