使用公式在Excel单元格中格式化一部分文本

9

我用Excel中的公式构建了一个字符串。例如:

单元格C3包含文本“语言”
单元格C4 = “英语,西班牙语,德语,法语”
我的公式= C3 & “:” & CHAR(10) & C4

期望的文本如下:

语言:
英语,西班牙语,德语,法语

(其中粗体文本实际上会是一些颜色,比如红色)

在Excel中有没有办法做到这一点(更改部分文本格式)。

我尝试过一个公式...(不起作用)

Function formatText(InText As Range)

'Set font color
  InText.Characters(1.5).Font.Color = Red
   'InText.Characters((InStr(1, ":", InText) + 1), (Len(InText) - InStr(1, ":", InText))).Font.ColorIndex = 3
End Function

2
+1 有趣的问题/应用程序的不足之处 - whytheq
4个回答

4

你发布的函数只有在以下两种情况下才会起作用:

  • 它被从 Sub 中调用(即,如其他人所提到的那样,不是作为UDF)

并且

  • InText 范围内包含的值是字符串常量。(这是我回答的主要要点)

对于任何包含公式的InText 范围中的单元格,它将不起作用。据我所知,您无法对公式返回的字符串的一部分进行格式设置。

顺便说一句,我很想被证明是错误的!


+1!很想证明你是错的,但只有在事先将公式更改为值时才能起作用。否则,它会将颜色应用于所有单元格。 :-( - Peter Albert
是的,我明白你的意思。那么,您如何将公式输出转换为字符串,以便可以应用文本格式? - Hightower

3
关于Hightower提出的问题,“如何将公式输出转换为字符串以便应用文本格式?”
要将公式的输出结果转换为字符串以便应用文本格式,你需要将公式返回的值写入电子表格中,然后对你写入的值应用格式。你可以将值写入包含公式的单元格(这将擦除公式),或者你可以将值写入电子表格中的其他位置(这将保留公式,但你会看到两份)。
Sub Cell_Format(InText as Range)
  InText.formula = cstr(InText.value)  ' converts result of formula into a string literal   
    'or: InText.offset(0,1).formula = cstr(InText.value) -- writes the value in the cell next to InText
  InText.characters(1, 5).font.color = vbRed
End Sub

那么Cell_Format range("$A$1")将会用字符串替换单元格$A$1中的公式,并将前五个字符的颜色更改为红色。

如果您要对一个包含多个单元格的区域进行操作,请在上述代码中添加以下内容:

Sub Range_Format(InText as Range)
  For each c in InText
    Cell_Format(c)
  Next
End Sub

0

你不能在Excel界面中直接调用下面的UDF。为此,您需要使用事件,因为UDF无法更改单元格的物理特性。有关更多详细信息,请阅读此链接。http://support.microsoft.com/kb/170787

Function formatText(InText As Range)

'Set font color
  InText.Interior.Color = vbRed
   'InText.Characters((InStr(1, ":", InText) + 1), (Len(InText) - InStr(1, ":", InText))).Font.ColorIndex = 3
End Function

0
你需要使用这段代码:
InText.Characters(1,5).Font.Color = RGB(255, 0, 0)

如果您想使其更加灵活,以便仅第二行(完全)为红色,请使用此代码:
InText.Characters(Instr(InText, vbCr)+1, Len(InText)-Instr(InText, vbCr)).Font.Color = RGB(255, 0, 0)

请注意,您的函数需要从VBA中调用,即您无法将其用作用户定义函数!UDF只能返回结果,但永远不能修改单元格!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接