2016-05-31 4 views
0

В настоящее время у меня есть макрос excel, который при запуске переходит в ячейку по ячейке в столбце, выделяя только жирные слова из строки, длинной абзаца. Он помещает все смелые слова, найденные в строке в соседней ячейке. Например, ячейка A1 является абзацем текста, а некоторые слова выделены жирным шрифтом, когда макрос запускается, все выделенные жирным словом слова, найденные в A1, затем помещаются в ячейку B1. Он отлично работает, за исключением того, что все выделенные жирным шрифтом помещаются в одну длинную строку, без пробелов между каждым выделенным словом. Мне нужна помощь, создавая разделитель, который должен быть помещен между всеми выделенными словом, найденными в строке. Благодаря!Форматирование экстракции данных с добавлением Delimeter с Excel VBA

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 

Ideal 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

 Смежные вопросы

  • Нет связанных вопросов^_^