我有一个电子表格,其中包含基于另一个单元格内容的超链接。我需要超链接基于显示(格式化)值而不是源单元格的数据值。如果不借助 VBA,这可行吗?示例:
实际值:
| A | B |
| 1 | =HYPERLINK("../Form_"&A6) |
| 2 | =HYPERLINK("../Form_"&A7) |
| 3 | =HYPERLINK("../Form_"&A8) |
显示为:
A列自定义格式:"Form_"000
| A | B |
| Form_001 | ../Form_001 |
| Form_002 | ../Form_002 |
| Form_003 | ../Form_003 |
功能价值:
| A | B |
| 1 | file:///../Form_001 |
| 2 | file:///../Form_002 |
| 3 | file:///../Form_003 |
答案1
A 列的内容和表单名称是否有一些固定的格式,或者这是一个通用问题?
TEXT()
如果您可以避免“Form”中的“m”(因为会认为它是月份指示器),您可以采取一些措施TEXT()
,但这不是一个通用的解决方案。
例如:=HYPERLINK("../"&TEXT(A2,"For_000#"))
可以工作,但是=HYPERLINK("../"&TEXT(A2,"Form_000#"))
不能工作。
但是如果您可以在 &text 构造之外添加所需的额外位,那么您可以使用任何您喜欢的字符:
=HYPERLINK("../Form_"&TEXT(A2,"000"))
您可以使用标准格式化代码在"..."
部分中,例如“$0.00”,“yyyy/mm/dd”。
答案2
我没有看到将单元格作为其格式化值返回的函数。即使您更喜欢非 VBA 解决方案,它也是一种简单、直接的函数:
Function AsFormatted(v As Variant) As String
AsFormatted = v.Text
End Function
答案3
除非我误解了事情,否则您只需将 A 列中的简单 1-3 位数字值更改为以“Form_”开头,并始终使用三位数来表示数字。
执行该操作的格式化字符串是:
\F\o\r\m_000
请注意前五个字符前面的“\”。这确保 Excel 将它们视为文本,而不是月份指示符之类的东西,或者其他奇怪的惊喜。然后末尾的三个零将被理解为要求数字具有完整的三个字符,因此“82”变成“082”等等。
但当然,将单元格格式化为该格式不会帮助您获得用于文本字符串的输出!但是,您可以使用TEXT()
指定该字符串的函数来执行此操作。然后您的HYPERLINK()
函数将拥有形成所需超链接所需的所有字符串材料。
请注意:
“表格_”000
也将在单元格格式中起作用,因为文本周围的双引号使 Excel 意识到不要将“m”视为表示月份,但在公式中TEXT()
,需要使用双引号,而现在您看到的是单双引号:
""Form_""000
因为公式本身将单双引号视为设置整个格式字符串,而不是指示要放入格式中的文本。但我发现额外的双引号令人讨厌,有时甚至在最终工作时显得怪异,所以我将使用我给出的第一个格式字符串,因为它始终有效,并且不需要比所有这些 \ 更令人讨厌的东西。
希望这就是您真正在寻找的!