所以我通常不会在这样的网站上发帖,但却经常使用它们。如果我来这里只是为了增加我的学习,非常感谢。但是今晚我非常沮丧。这是我的挑战:我将一个超链接公式嵌套在 if 语句中,该公式指向我根据是否已经将信息输入日志而创建的数字日志。如果是,则链接到下一个数据输入行;如果不是,则链接到第一行。我使用多个链接成功地创建了公式,但是,如果公式基于放置在另一个单元格中的唯一数字(这是我想要实现的动态工作表名称),则我无法使其工作。该数字是空箱中的数字,工作表以该数字命名。我需要使用一个超链接公式而不是数百个,这样我的程序就有一个可持续的动态界面,不需要我在每次我们的组织增加更多供应时都更新它。
这是有效公式的一个示例:
=IF('1016'!$J$7="", HYPERLINK("#'1016'!$J$7",""), HYPERLINK("#INDEX('1016'!$j$7:$j$56,MATCH(999999,'1016'!$j$7:$j$56,1)+1)",""))
这就是让我在讲话时白发越来越多的原因:
=IF('"&X2&"'!$J$7="", HYPERLINK("#'"&X2&"'!$J$7",""), HYPERLINK("#INDEX('"&X2&"'!$j$7:$j$56,MATCH(999999,'"&X2&"'!$j$7:$j$56,1)+1)",""))
因此公式中的 &X2&... 部分基本上是用户可以在一个单元格中输入的任何箱号,公式将链接到该箱的日志。实际上,这是我粘贴到工作表背景中的一张图片,看起来使图片看起来像是可以点击的链接,因此我的“空白友好名称”是空白的。
令人沮丧的是,我的两个超链接条件本身都可以正常工作,但是当我将相同的语法插入到 if 函数的逻辑部分时,如果数据输入日志为空,则工作表链接将不起作用。我相信我已经将它超链接到 if 语句的假部分,但是,无论我尝试什么,都无法使 if 语句的真部分起作用。我要么收到一条消息,告诉我链接基本上无效,要么收到#REF 或#VALUE 错误。我移动了哈希值和引号,尝试使用连接函数而不是上述语法,喝了更多酒,休息了一会儿,不管怎样,似乎都不起作用。我现在真的很生气。如果可以,请帮帮我。我知道这一定是一个简单的修复。再次感谢。如果我需要发布我的工作表,我只是不确定现在该怎么做。哦,顺便说一句,我在网上搜索了无数次,但似乎我是地球上唯一一个试图这样做的人,而且我们的组织不赞成任何代码,所以请不要使用 VBA。谢谢
答案1
在第一个示例中,'1016'!$J$7=""
测试工作表 1016 上单元格 J7 的值是否为空。
在第二个示例中,'"&X2&"'!$J$7=""
测试工作表 &X2& 上单元格 J7 的值是否为空,如果找不到名为 &X2& 的工作表,则测试将失败。
“&” 操作连接字符串,而不是单元格引用,因此要正确构建引用,您必须将其全部视为字符串,并相应地整理引号和连接:"'" & X2 &"'!$J7"
。但是,您只需要测试一个字符串与另一个字符串的值。要将字符串转换为单元格引用,您需要使用INDIRECT()
。类似这样的操作应该有效:
=IF( INDIRECT("'" & X2 & "'!$J$7",TRUE), true hyperlink, false hyperlink)
该TRUE
参数是必需的,以告诉 INDIRECT 字符串使用 A1 样式的单元格引用,而不是默认的 R1C1 引用。
您还需要修复动态超链接(可能通过将字符串“#”连接到公式的前面)。