Суть проблемы, вывести в соседние ячейки трехзначные цифры, и распределить их в зависимости от количества трехзначных цифр в главной ячейке. Цифры нужны только трехзначные, максимальное количество 3 трехзначных числа в ячейке + текст и разные символы. Цифры могут быть прицеплены к символам или к буквам. Буквы вбиты в случайном порядке, но в оригинале суть примерно та же, только читаемо ))). Через разбивку текста по столбцам не вариант, так исходная база в несколько тысяч строк.
Суть проблемы, вывести в соседние ячейки трехзначные цифры, и распределить их в зависимости от количества трехзначных цифр в главной ячейке. Цифры нужны только трехзначные, максимальное количество 3 трехзначных числа в ячейке + текст и разные символы. Цифры могут быть прицеплены к символам или к буквам. Буквы вбиты в случайном порядке, но в оригинале суть примерно та же, только читаемо ))). Через разбивку текста по столбцам не вариант, так исходная база в несколько тысяч строк.Kamandor
Простите, если не так выразился, но суть проблемы не меняется. Могут быть варианты. кто как вносил в свое время в базу, сейчас ни кто исправлять не хочет. Даже если они не будут сопровождаться символами и или буквами, решение есть?
Простите, если не так выразился, но суть проблемы не меняется. Могут быть варианты. кто как вносил в свое время в базу, сейчас ни кто исправлять не хочет. Даже если они не будут сопровождаться символами и или буквами, решение есть?Kamandor
Раз несколько тысяч - проще макросом ИМХО (жмём на смайлик) [vba]
Код
Sub gett() For i = 2 To [a1000000].End(xlUp).Row With CreateObject("VBScript.RegExp") .Global = True .Pattern = "\d{3}" If .test(Cells(i, 1)) Then Set m = .Execute(Cells(i, 1)) For j = 0 To m.Count - 1 Cells(i, 5 + j) = CInt(m(j)) Next j End If End With Next i End Sub
[/vba]
Цитата
еще одна задача
- ещё одна тема
Раз несколько тысяч - проще макросом ИМХО (жмём на смайлик) [vba]
Код
Sub gett() For i = 2 To [a1000000].End(xlUp).Row With CreateObject("VBScript.RegExp") .Global = True .Pattern = "\d{3}" If .test(Cells(i, 1)) Then Set m = .Execute(Cells(i, 1)) For j = 0 To m.Count - 1 Cells(i, 5 + j) = CInt(m(j)) Next j End If End With Next i End Sub
тоже крайне интересный вариант, вот только не силен в создании и привязке кнопки к модулям. если правильно выразился про смайлик. но файл сохраню ;)) спасибо!
тоже крайне интересный вариант, вот только не силен в создании и привязке кнопки к модулям. если правильно выразился про смайлик. но файл сохраню ;)) спасибо!Kamandor
Function vvv1(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{3}" If .test(t) Then vvv1 = CInt(.Execute(t)(0)) Else vvv1 = "" End With End Function
[/vba] [vba]
Код
Function vvv2(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{3}": .Global = True If .test(t) And (.Execute(t).Count = 2 Or .Execute(t).Count = 3) Then vvv2 = CInt(.Execute(t)(1)) Else vvv2 = "" End With End Function
[/vba] [vba]
Код
Function vvv3(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{3}": .Global = True If .test(t) And .Execute(t).Count = 3 Then vvv3 = CInt(.Execute(t)(2)) Else vvv3 = "" End With End Function
[/vba]
Kamandor, вариант трех функций в столбцах B C D
[vba]
Код
Function vvv1(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{3}" If .test(t) Then vvv1 = CInt(.Execute(t)(0)) Else vvv1 = "" End With End Function
[/vba] [vba]
Код
Function vvv2(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{3}": .Global = True If .test(t) And (.Execute(t).Count = 2 Or .Execute(t).Count = 3) Then vvv2 = CInt(.Execute(t)(1)) Else vvv2 = "" End With End Function
[/vba] [vba]
Код
Function vvv3(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{3}": .Global = True If .test(t) And .Execute(t).Count = 3 Then vvv3 = CInt(.Execute(t)(2)) Else vvv3 = "" End With End Function