2016-05-31 70 views
0

目前我有一个excel宏,它在运行时会逐个单元格放在一列中,只从段落长度的字符串中提取粗体字。它将在字符串中找到的所有粗体字放在相邻的单元格中。例如...单元格A1是一段文字,其中一些单词用粗体显示,宏运行时,所有在A1中发现的加粗单词都放在单元格B1中。它的效果很好,只是所有粗体字都放在一个长字符串中,每个粗体字之间没有空格。我需要帮助创建一个分隔符来放置在字符串中找到的所有粗体字之间。谢谢!使用Excel VBA添加Delimeter格式化数据提取

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 $1 

理想B1输出:

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

真的理想输出:通过细胞在相邻列分隔。

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

回答

1

尝试类似这样的事情。

更换

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 

这应该自动添加一个分隔符时,大胆的字符之后的字符不是大胆。

  • 未测试代码。提供来展示这个想法。
+0

完美的工作!非常感谢。 – Davey