使用 Excel VBA 添加分隔符格式化数据提取

Formatting Data Extraction with added Delimeter with Excel VBA

目前我有一个 excel 宏,当 运行 时,它在一列中逐个单元格向下移动,仅从一个段落长的字符串中提取粗体字。它将在字符串中找到的所有粗体字放在相邻的单元格中。例如...单元格A1是一段文本,其中一些单词加粗,当宏为运行时,则将A1中的所有加粗单词放入单元格B1中。它工作得很好,除了所有粗体字都放在一个长字符串中,每个粗体字之间没有空格。我需要帮助创建一个分隔符以放置在字符串中找到的所有粗体字之间。谢谢!

Sub GetBoldedInfo()
    Dim txt As String
    boldedRow = Cells(Rows.Count, "A").End(xlUp).Row

    For Each c In Range(ActiveCell, ActiveCell.End(xlDown))
        myboldtext = ""
    For i = 1 To Len(c.Value)
        If c.Characters(Start:=i, Length:=1).Font.FontStyle = "Bold" Then
            txt = Mid(c.Value, i, 1)
    'text in bold
            myboldtext = myboldtext & txt
        End If
    Next
    c.Offset(0, 1) = myboldtext
    Next
End Sub

B1输出:

 China – ABC:NIKEAccount # 1234567890RetailFreight - Ocean1 potential annual shipmentsannual revenue of US 

理想的B1输出:

  China – ABC:;NIKE;Account # 1234567890;Retail;Freight - Ocean;1 potential annual shipment;annual revenue of US 

真正理想的输出: 由相邻列中的单元格分隔。

  B1 = China – ABC: C1 = NIKE D1 = Account  # 1234567890 etc.

尝试这样的事情。

替换

    If c.Characters(Start:=i, Length:=1).Font.FontStyle = "Bold" Then
        txt = Mid(c.Value, i, 1)
'text in bold
        myboldtext = myboldtext & txt
    End If

If c.Characters(Start:=i, Length:=1).Font.FontStyle = "Bold" Then
        If c.Characters(Start:=i + 1, Length:=1).Font.FontStyle <> "Bold" Then
'text in bold with delimiter
            txt = Mid(c.Value, i, 1) 
            myboldtext = myboldtext & txt & ";"
        else 
'text in bold
            txt = Mid(c.Value, i, 1)
            myboldtext = myboldtext & txt
        End If
    End If

当粗体字符后面的字符不是粗体时,这应该会自动附加一个分隔符。

  • 代码未经测试。提供来证明这个想法。