连接公式中的粗体文本

Noc*_*tis 5 excel vba excel-vba excel-formula

在使用连接公式时,我希望能够在句子中使用一两个特定的单词.一个例子如下所示.

在此输入图像描述

第一句是使用连接公式.第二句是手动输入和格式化的.有没有办法在连接公式中使用此格式而不必每次都手动执行此操作?

请注意,这只是一个示例,我可能需要使用它来在不同的句子中将三个连续单词的字符串加粗.如果提供一般规则,我可以继续前进,这将是伟大的!

我对公式有点精通,但从未使用过VBA.但是我怀疑这个问题的解决方案可能只能使用VBA.如果需要VBA解决方案,请考虑周到,因为我需要一些时间和精力来启动和理解.

谢谢你的时间和帮助.

编辑:

Public Sub ExampleConcatenate()
    Dim str1 As String, str2 As String, str3 As String, str4 As String, str5 As String, str6 As String
    str1 = "First string "
    str2 = "Second string "
    str3 = "Third string"
    str4 = "Fourth string "
    str5 = "Fifth string "
    str6 = "Sixth string"


    Range("A1").Value = str1 & str2 & str3 & str4 & str5 & str6 'concatenate strings

    'format bold starts 1 character after str1 and is as long as str2
    Range("A1").Characters(Start:=Len(str1) + 1, Length:=Len(str2)).Font.Bold = True
End Sub
Run Code Online (Sandbox Code Playgroud)

我如何进一步扩展最后部分以使第四和第六个字符串变粗?

Pᴇʜ*_*Pᴇʜ 7

如果该单元格包含公式,则无法格式化单元格文本中的单个字符.
Excel不支持这一点.


解决方法

唯一的解决方法是将该单元格文本写为常量文本(使用VBA)而不是公式(如果符合您的要求).

然后您可以使用以下内容设置单个字

Range("A1").Characters(Start:=1, Length:=10).Font.Bold = True
Run Code Online (Sandbox Code Playgroud)

因此,要部分格式化字符串,您可以调整以下示例

Public Sub ExampleConcatenate()
    Dim str1 As String, str2 As String, str3 As String
    str1 = "First string "
    str2 = "Second string "
    str3 = "Third string"

    Range("A1").Value = str1 & str2 & str3 'concatenate strings

    'format bold starts 1 character after str1 and is as long as str2
    Range("A1").Characters(Start:=Len(str1) + 1, Length:=Len(str2)).Font.Bold = True
End Sub
Run Code Online (Sandbox Code Playgroud)

对于更多子字符串,使用数组会更容易.

Public Sub ExampleConcatenate()

    Dim SubStrings As Variant
    SubStrings = Array("First string ", _
                       "Second string ", _
                       "Third string ", _
                       "Fourth string ", _
                       "Fifth string ", _
                       "Sixth string")

    Range("A1").Value = Join(SubStrings, "")

    'Note array counting starts with 0 not 1 so "First string" is SubStrings(0)

    'format bold starts 1 character after str1 and is as long as str2
    Range("A1").Characters(Start:=Len(SubStrings(0)) + 1, Length:=Len(SubStrings(1))).Font.Bold = True
    'format sub string 4
    Range("A1").Characters(Start:=Len(SubStrings(0)) + Len(SubStrings(1)) + Len(SubStrings(2)) + 1, Length:=Len(SubStrings(3))).Font.Bold = True
    'format sub string 6
    Range("A1").Characters(Start:=Len(SubStrings(0)) + Len(SubStrings(1)) + Len(SubStrings(2)) + Len(SubStrings(3)) + Len(SubStrings(4)) + 1, Length:=Len(SubStrings(5))).Font.Bold = True

End Sub
Run Code Online (Sandbox Code Playgroud)