Добрый день. Пытаюсь сделать следующее. Коротко: Вот эту запись: "Приказ ИД от 12 мая 2017П II" преобразовать вот в эту: "170512REDO2". Подобных записей большое множество (пример приложен).
Подробно: Есть названия директив. Самому файлу дается имя по определенному шаблону, например, "170512REDO2". А если эта директива упоминается в тексте, то ее пишут по-другому: "Приказ ИД от 12 мая 2017П II" Расшифрую 170512REDO2: 17 - год 05 - месяц 12 - число R - П (означает, что в директиву вносились изменения) EDO - Приказ ИД 2 - II (означает, что в этот день это был второй приказ) У меня есть список директив, названия которых записаны как в тексте, т.е. "Приказ ИД от 12 мая 2017П II". Мне нужно по этому списку составлять книгу в Индизайне. Для автоматической сборки мне нужно преобразовать запись как в тексте в запись как в названии файла: "170512REDO2". Я в VBA не силён и смог написать только скрипт по замене соответствующих частей, т.е. Приказ ИД - EDO, мая - 05, П - R, II - 2. А как их расставить в правильной последовательности не знаю. Далее приходится делить текст по столбцам и объединять в правильной последовательности через формулы. Хочу это упростить. Помогите, плиз.
Добрый день. Пытаюсь сделать следующее. Коротко: Вот эту запись: "Приказ ИД от 12 мая 2017П II" преобразовать вот в эту: "170512REDO2". Подобных записей большое множество (пример приложен).
Подробно: Есть названия директив. Самому файлу дается имя по определенному шаблону, например, "170512REDO2". А если эта директива упоминается в тексте, то ее пишут по-другому: "Приказ ИД от 12 мая 2017П II" Расшифрую 170512REDO2: 17 - год 05 - месяц 12 - число R - П (означает, что в директиву вносились изменения) EDO - Приказ ИД 2 - II (означает, что в этот день это был второй приказ) У меня есть список директив, названия которых записаны как в тексте, т.е. "Приказ ИД от 12 мая 2017П II". Мне нужно по этому списку составлять книгу в Индизайне. Для автоматической сборки мне нужно преобразовать запись как в тексте в запись как в названии файла: "170512REDO2". Я в VBA не силён и смог написать только скрипт по замене соответствующих частей, т.е. Приказ ИД - EDO, мая - 05, П - R, II - 2. А как их расставить в правильной последовательности не знаю. Далее приходится делить текст по столбцам и объединять в правильной последовательности через формулы. Хочу это упростить. Помогите, плиз.drugojandrew
смог написать только скрипт по замене соответствующих частей, т.е. Приказ ИД - EDO, мая - 05, П - R, II - 2. А как их расставить в правильной последовательности не знаю.
Вам предложили готовое решение. Но, уж если Вы пытались решить задачу самостоятельно, то Вам надо было не замену делать, а назначать этим частям переменные с соответствующими значениями, а потом составить их (переменные) в нужном порядке. Что то, типа так. Если есть желание, для общего развития, можете поупражняться и с таким вариантом.
[vba]
Код
Sub WWW() Dim i&, znac$, tkt$, edo$, fin$, drv$ Dim mes$, vp$, pp$, den$, god$ tkt = Cells(2, 1) & " " 'Определяем месяц If InStr(tkt, " янв.") Then mes = "01" If InStr(tkt, " февр.") Then mes = "02" 'и так далее
'Выбираем вид приказа If InStr(tkt, "Приказ ИД") Then edo = "EDO" If InStr(tkt, "ФинД") Then fin = "FinDo" If InStr(tkt, "Директива") Then drv = "D" 'и так далее
'Выбираем вид пересмотра If InStr(tkt, "ПА") Then vp = "RA" 'и так далее
'Выбираем порядок приказа If InStr(tkt, "I") Then pp = "1" 'и так далее
'Выбираем день и год For i = 1 To Len(tkt) If InStr(1, "1234567890,", Mid(tkt, i, 1)) <> 0 Then znac = znac & Mid(tkt, i, 1) Else If Len(znac) = 1 Then den = "0" & znac If Len(znac) = 2 Then den = znac If Len(znac) = 4 Then god = Mid(znac, 3, 2) znac = "" End If Next 'складываем в кучу в нужном прядке MsgBox god & mes & den & edo & vp & fin & drv & pp End Sub
смог написать только скрипт по замене соответствующих частей, т.е. Приказ ИД - EDO, мая - 05, П - R, II - 2. А как их расставить в правильной последовательности не знаю.
Вам предложили готовое решение. Но, уж если Вы пытались решить задачу самостоятельно, то Вам надо было не замену делать, а назначать этим частям переменные с соответствующими значениями, а потом составить их (переменные) в нужном порядке. Что то, типа так. Если есть желание, для общего развития, можете поупражняться и с таким вариантом.
[vba]
Код
Sub WWW() Dim i&, znac$, tkt$, edo$, fin$, drv$ Dim mes$, vp$, pp$, den$, god$ tkt = Cells(2, 1) & " " 'Определяем месяц If InStr(tkt, " янв.") Then mes = "01" If InStr(tkt, " февр.") Then mes = "02" 'и так далее
'Выбираем вид приказа If InStr(tkt, "Приказ ИД") Then edo = "EDO" If InStr(tkt, "ФинД") Then fin = "FinDo" If InStr(tkt, "Директива") Then drv = "D" 'и так далее
'Выбираем вид пересмотра If InStr(tkt, "ПА") Then vp = "RA" 'и так далее
'Выбираем порядок приказа If InStr(tkt, "I") Then pp = "1" 'и так далее
'Выбираем день и год For i = 1 To Len(tkt) If InStr(1, "1234567890,", Mid(tkt, i, 1)) <> 0 Then znac = znac & Mid(tkt, i, 1) Else If Len(znac) = 1 Then den = "0" & znac If Len(znac) = 2 Then den = znac If Len(znac) = 4 Then god = Mid(znac, 3, 2) znac = "" End If Next 'складываем в кучу в нужном прядке MsgBox god & mes & den & edo & vp & fin & drv & pp End Sub
sboy, спасибо, работает. Но в один момент не учтен: при преобразовании П, ПА, ПБ и т.п. там есть просто "П" без дополнительных букв. "П" должно заменяться на "R". Если ее подставить в функцию, то происходит замена П в "Приказ" и как следствие "R" появляется везде. Пока не могу сообразить как это поправить...
sboy, спасибо, работает. Но в один момент не учтен: при преобразовании П, ПА, ПБ и т.п. там есть просто "П" без дополнительных букв. "П" должно заменяться на "R". Если ее подставить в функцию, то происходит замена П в "Приказ" и как следствие "R" появляется везде. Пока не могу сообразить как это поправить...drugojandrew