Excel:在另一个单元格的公式中包含格式

Excel:在另一个单元格的公式中包含格式

我有一个电子表格,其中包含基于另一个单元格内容的超链接。我需要超链接基于显示(格式化)值而不是源单元格的数据值。如果不借助 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

因为公式本身将单双引号视为设置整个格式字符串,而不是指示要放入格式中的文本。但我发现额外的双引号令人讨厌,有时甚至在最终工作时显得怪异,所以我将使用我给出的第一个格式字符串,因为它始终有效,并且不需要比所有这些 \ 更令人讨厌的东西。

希望这就是您真正在寻找的!

相关内容