![Excel:同一单元格中不同值的格式不同](https://linux22.com/image/1582834/Excel%EF%BC%9A%E5%90%8C%E4%B8%80%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD%E4%B8%8D%E5%90%8C%E5%80%BC%E7%9A%84%E6%A0%BC%E5%BC%8F%E4%B8%8D%E5%90%8C.png)
我在 Excel 中有以下公式:
=TEXTO(D39;"#.##0")&" "&"("&TEXTO(D40;"0%")&")"
此公式返回一个具有单元格大小的输出——此图中左侧的数字:
我需要更改单元格中公式输出的百分比部分的格式(参见右侧的示例)。
我该怎么做?
我知道在没有公式(只有数字或文本)的情况下该如何做到这一点,我尝试对这种情况执行相同的程序,但它不起作用。
答案1
不,没有办法用公式来做到这一点,即使单元格中有公式。单元格中可以使用不同大小的字体吗?是的。可以用其他方式做到这一点吗?是的,主要涉及 VBA,但这超出了这个问题的范围。
问题是 Excel 公式返回的是一个值,无论其性质如何,而不是格式化。格式化应用于单元格中的数据,因此它适合您想要的表示,例如日期格式化。日期在 Excel 中以序列化形式存储,通常以区域设置日期格式表示。
对于 VBA 方法,您必须使用类似函数来解析单元格数据,InSTR()
以便将数值与百分比值分开。然后,您可以将所需的格式应用于任一部分并将其返回到单元格。
干杯。
编辑:
正如您在下面看到的,还有另一种方法,它涉及计算字符数并应用所需的格式。我录制了一个小宏供您用作模板。
Sub Macro1()
'
' Macro1 Macro
'
'
Range("H13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Dude(11,3%)"
Range("H13").Select
ActiveCell.FormulaR1C1 = "Dude(11,3%)"
With ActiveCell.Characters(Start:=1, Length:=13).Font
.Name = "Tahoma"
.FontStyle = "Normal"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
With ActiveCell.Characters(Start:=14, Length:=7).Font
.Name = "Tahoma"
.FontStyle = "Normal"
.Size = 20
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Range("I13").Select
End Sub