Страницы: 1
RSS
Как разделить текст из слов и цифр, написанных слитно?
 
Добрый день.

Как разделить "John Deere950WTS" по разным ячейкам строки на "John Deere" "950" "WTS"?
Изменено: CheT - 03.04.2015 19:05:57
 
Еще варианты могут быть? Например: не одно число; цифры через тире; всегда 3-значное; проч.
Покажите варианты в файле.
 
Варианты могут быть разные.
Количество слов и/или цифр разное, могут быть пробелы/дефисы
Изменено: CheT - 03.04.2015 19:14:48
 
Я правильно понял, что между двумя строками (1 и 3) разделителем является серия цифр? Если да, то это спокойно можно сделать.
Изменено: Все_просто - 03.04.2015 19:48:49
С уважением,
Федор/Все_просто
 
Код
Sub ikki()
  Set r = CreateObject("vbscript.regexp")
  r.ignorecase = True
  r.Pattern = "([a-zа-яё][-a-zа-яё\s]*)([0-9]+)([-a-zа-яё\s]*)?"
  For Each c In Intersect([a1].CurrentRegion, Columns(1)).Cells
    Set m = r.Execute(c.Value)
    If m.Count Then
      For i = 0 To 2: c.Offset(, i + 1).Value = m(0).submatches(i): Next
    End If
  Next
End Sub


можно шаблон подсократить до такого:
Код
r.Pattern = "(\D*)?(\d+)(\D*)?"
Изменено: ikki - 03.04.2015 20:05:35
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Федор,
Есть столбец в ячейки которого внесены марки+модели техники, чаще всего через пробел, местами через дефис. При этом попадаются точки, запятые, косые(при том разные "/" и "\") и другие знаки не относящиеся к цифрам и буквам. Марка техники, в 99,9% случаев, это слово или буква(такое тоже бывает) или сочетание слов(опять же, как правило двух), а далее идет циферно-буквенное или буквенно-циферное обозначение модели. И вот тут то часто встречается когда буквы с цифрами написаны без разделителей.
Пример того что я хочу я добавил в файле что размещал ранее. Посмотрите пожалуйста.
Изменено: CheT - 03.04.2015 20:04:27
 
У меня как-то так получилось. Если есть еще какие-то неучтенные разделители, просто добавьте их в строку "[/\.,-]"

Код
Function NN(Name As String) As String
Dim Names
Dim isDig As Boolean, aName, tName, ResName As String
Names = Split(Name)
For Each aN In Names
    If Left(aN, 1) Like "[0123456789]" Then isDig = True
    aName = ""
    For I = 1 To Len(aN)
        tName = Mid(aN, I, 1)
        If tName Like "[/\.,-]" Then tName = " "
        If isDig Xor (Not tName Like "[0123456789]") Then
            tName = " " & tName
            isDig = Not isDig
        End If
        aName = aName & tName
    Next I
    ResName = ResName & " " & aName
Next aN
NN = Application.WorksheetFunction.Trim(ResName)
End Function

 
ы-ы-ы (8
кто сможет хуже чем я - тот победитель! (8
формулы + куча скрытых столбцов (8
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
" ikki 3 Апр 2015 20:02:08" и "Ёк-Мок 3 Апр 2015 21:55:42"

Спасибо, но мне нужно несколько детальнее разложить текст по ячейкам. Пример в файле от "3 Апр 2015 20:02:43"
Изменено: CheT - 09.04.2015 10:40:02
 
" МВТ 3 Апр 2015 20:13:10"

Ваш код не работает, к сожалению.
Тестил на этом файле
Изменено: CheT - 09.04.2015 11:50:41
 
После того, как преобразовал формат ячеек из текстового в общий, у меня все сработало
Изменено: МВТ - 09.04.2015 12:12:56
 
Оооо!
А теперь "Текст по столбцам" мне в помощь
МВТ СПАСИБО!!!
 
ну вот с выводом в соседний столбец(ы)
F1 творит чудеса
Страницы: 1
Наверх