使用 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
当粗体字符后面的字符不是粗体时,这应该会自动附加一个分隔符。
- 代码未经测试。提供来证明这个想法。
目前我有一个 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
当粗体字符后面的字符不是粗体时,这应该会自动附加一个分隔符。
- 代码未经测试。提供来证明这个想法。