我有一份食谱电子表格,其中有一个导航栏,可导航至不同的类别(例如 PREP 或 HOT 等)。选择 PREP 时,会出现第二个列表,其中包含所有准备项目。用户单击 PREP 项目,食谱就会出现。我可以让所有这些都正常工作。但它有点笨拙,因为我使用隐藏单元格来管理显示哪个食谱列表。
我想要做的是通过引用存储在单元格中的命名范围,根据类别更新一个列表。
例子:
=HYPERLINK("#PREP_1",E2)
这很完美。
但是当我在 A1 中存储“#PREP_1”时
=HYPERLINK(INDIRECT(A1),E2)
这不管用。我尝试了很多次,但似乎找不到解决办法。
我是不是太笨了?......也许不应该在网上问这个问题!
谢谢!
答案1
这里有几个困难。一个是INDIRECT()
不需要。这是因为第二个困难:你给出的是HYPERLINK()
字符串,而不是某种引用。要求的是字符串,而不是引用,HYPERLINK()
当它发挥自己的魔力时,它会将其视为引用。将其转换为引用实际上会给函数一个它无法使用的参数。然后还有一个困难:
#PREP_1
不是命名范围的有效名称。您用来INDIRECT()
获取 A1 中的值并将其转换为引用。到目前为止一切顺利,但 A1 中的内容必须是有效引用,否则无法执行该步骤。
的问题#PREP_1
在于以 为前导#
。因此,如果你将其与其余部分分开(其余部分是 Excel 可以接受的名称),事情就会顺利进行:
=HYPERLINK("#"&A1,E2)
实际上,由于您将分离各部分并将它们用作文本部分来构建字符串,因此您不需要(也从来不需要)INDIRECT()
。如上所示,Excel 在 A1 中找到值,然后将其附加到#
获取#PREP_1
字符串中,它期待并乐意立即使用该字符串,无需进一步的工作。
请注意,它PREP_1
仍然必须是一个命名范围,否则字符串将无法解析为任何HYPERLINK()
可以使用的内容,并且会出现错误。
通常,人们在使用INDIRECT()
命名区域时遇到的问题是,他们忘记了已经插入了要解析的级别,但并未更改公式来执行此操作,或者删除了级别以保持平衡。但在这种情况下,您添加了一个解析级别,以便公式将其解析为可行的值(如果该值的呈现方式不同),然后将该值解析为空,可以说,Excel 不知道如何处理最终得到的空值。
答案2
天哪,我试过了 A1 中我能想到的所有迭代方法,除了删除 #。我让它以 VALUETOTEXT(A1) 作为参考,但将 A1 保留为命名范围并在超链接中添加 # 要容易得多。
简单地:
=HYPERLINK("#"&A1,E2)
就这么简单!
谢谢你!