Добрый день, нужна помощь. Уже пол дня убил на то чтобы хоть как-то разобраться. Есть большой объем данных помещенных в одну ячейку, его нужно структурировать разделив по разным ячейкам, пример того что есть и того что пытаюсь добиться в файле. Если коротко, то необходимо провести поиск по маске или ключевым словам и выцепить каждое значение в свой столбец, как это реализовать не могу понять в связи с ограниченностью знаний. Пробовал по столбцам, но получается не сильно лучше, где-то то вместо точки запятая, где-то просто пробел, зацепиться не получилось, пытался как-то формулами, но в них разбираюсь плохо, и так и не понял как это реализовать, на VBA программировать не умею, к сожалению. Может кто подсказать хотя бы примерное решение или формулу которой так можно сделать?
Добрый день, нужна помощь. Уже пол дня убил на то чтобы хоть как-то разобраться. Есть большой объем данных помещенных в одну ячейку, его нужно структурировать разделив по разным ячейкам, пример того что есть и того что пытаюсь добиться в файле. Если коротко, то необходимо провести поиск по маске или ключевым словам и выцепить каждое значение в свой столбец, как это реализовать не могу понять в связи с ограниченностью знаний. Пробовал по столбцам, но получается не сильно лучше, где-то то вместо точки запятая, где-то просто пробел, зацепиться не получилось, пытался как-то формулами, но в них разбираюсь плохо, и так и не понял как это реализовать, на VBA программировать не умею, к сожалению. Может кто подсказать хотя бы примерное решение или формулу которой так можно сделать?Luis32
Function aaa$(t$) aaa = Split(t, ".")(0) End Function
[/vba]
[vba]
Код
Function bbb$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d+" bbb = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
Function ccc$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d+\.\d+\.\d+": .Global = True ccc = .Execute(t)(.Execute(t).Count - 1) End With End Function
[/vba]
[vba]
Код
Function ddd$(t$) ddd = Trim(Split(Split(t, ".")(2), "/")(0)) End Function
[/vba]
[vba]
Код
Function uuu$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d+\.\d+\.\d+" uuu = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
Function zzz$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{10}" zzz = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
Function fff$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "[а-яё]+ [а-яё]\.[а-яё]\.": .IgnoreCase = True: .Global = True fff = .Execute(t)(0) & "," & .Execute(t)(1) End With End Function
[/vba]
Luis32 вариант функций(UDF) столбцах C-I
[vba]
Код
Function aaa$(t$) aaa = Split(t, ".")(0) End Function
[/vba]
[vba]
Код
Function bbb$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d+" bbb = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
Function ccc$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d+\.\d+\.\d+": .Global = True ccc = .Execute(t)(.Execute(t).Count - 1) End With End Function
[/vba]
[vba]
Код
Function ddd$(t$) ddd = Trim(Split(Split(t, ".")(2), "/")(0)) End Function
[/vba]
[vba]
Код
Function uuu$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d+\.\d+\.\d+" uuu = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
Function zzz$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "\d{10}" zzz = .Execute(t)(0) End With End Function
[/vba]
[vba]
Код
Function fff$(t$) With CreateObject("VBScript.RegExp"): .Pattern = "[а-яё]+ [а-яё]\.[а-яё]\.": .IgnoreCase = True: .Global = True fff = .Execute(t)(0) & "," & .Execute(t)(1) End With End Function
SLAVICK, благодарю за уточнение,в дальнейшем буду так поступать(,в данных вариантах .Execute(t)(0) только три случая-то есть можно укоротить,.Execute(t).Count-1 здесь один случай,Split другие случаи).
SLAVICK, благодарю за уточнение,в дальнейшем буду так поступать(,в данных вариантах .Execute(t)(0) только три случая-то есть можно укоротить,.Execute(t).Count-1 здесь один случай,Split другие случаи).sv2014
Сообщение отредактировал sv2014 - Вторник, 06.02.2018, 13:31
,в данных вариантах .Execute(t)(0) только три случая-то есть можно укоротить,.Execute(t).Count-1 здесь один случай,
все - равно можно же использовать более универсальную UDF, в которой можно прописать все необходимые параметры. Закинуть ее себе в книгу макросов и вызывать просто меняя параметры. Например тут есть несколько неплохих ЮДФок.
,в данных вариантах .Execute(t)(0) только три случая-то есть можно укоротить,.Execute(t).Count-1 здесь один случай,
все - равно можно же использовать более универсальную UDF, в которой можно прописать все необходимые параметры. Закинуть ее себе в книгу макросов и вызывать просто меняя параметры. Например тут есть несколько неплохих ЮДФок.SLAVICK