字符串格式-使用公式格式化Excel单元格中的文本子集



我在excel中使用公式建立了一个字符串。例如

单元格C3包含文本"Languages"
Cell 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

您发布的函数与工作当且仅当

  • Sub调用(即,正如其他人所提到的,不是作为UDF)

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

将不工作任何单元格在范围InText包含公式。答:您不能格式化公式返回的字符串部分

顺便说一句,我希望在这件事上被证明是错的!

关于Hightower的问题,"如何将公式输出转换为字符串以便应用文本格式?"

要"强制转换"公式的输出,以便可以应用文本格式,必须将公式返回的值写入电子表格,然后将格式应用于所写的值。您可以将值写入包含公式的单元格中(这将擦除公式),也可以将值写入电子表格中的其他位置(这将保留公式,但随后您将看到double)。

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

您需要使用以下代码:

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只能返回结果,但不能修改单元格!

不能在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

最新更新