Добрый день! Проблема такая много приходится вбивать д...

Автор ForumOOo (бот), 11 июля 2017, 14:12

0 Пользователи и 1 гость просматривают эту тему.

ForumOOo (бот)

Компонент: Calc
Версия продукта: 4.x
Сборка: Apache OpenOffice
ОС: windows 10

Добрый день! Проблема такая много приходится вбивать данных в
биллинговую ситему. От операторов приходит в виде
                                   код                   подкоды    
                        цена                             Швейцария
(mob) - Swisscom   [ 41   ]  [75, 774-775, 79, 860774-860775, 86079   ]
[20,2777] а нужно разбить построчно в виде: если это возможно подскажите
Швейцария (mob) - Swisscom     41           4175                           
            20,2777
Швейцария (mob) - Swisscom     41           41774-41775                   
           20,2777
Швейцария (mob) - Swisscom     41           4179                           
            20,2777
Швейцария (mob) - Swisscom     41           41860774-41860775             
         20,2777
Швейцария (mob) - Swisscom     41           4186079                       
               20,2777



--
Подпись: Александр
Эл. почта: nekhay61@gmail.com

kompilainenn

сочувствую, что тут скажешь. А делать-то что надо в итоге?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

economist

#2
Макросом, написано за 5 минут...


Sub parseMob(a)
stroka="(mob) - Swisscom   [ 41   ]  [75, 774-775, 79, 860774-860775, 86079   ] [20,2777]"
stroka=replace(stroka,"  ", "")
stroka=replace(stroka," ", "")
stroka=replace(stroka,"]", "")
parts=split(stroka, "[")
partsSubCode=split(parts(2),",") '75, 774-775, 79, 860774-860775, 86079  

For n=0 to ubound(partsSubCode)
if instr(partsSubCode(n),"-")>0 then
firstSubCode=split(partsSubCode(n),"-")(0)
secondSubCode=split(partsSubCode(n),"-")(1)
Else
firstSubCode=""
secondSubCode=""
end if

if firstSubCode="" then
parts(2)=parts(1) & partsSubcode(n)
Else
parts(2)=parts(1) & firstSubCode & "-" & parts(1) & secondSubCode
End if

strokaItog=Join(parts," ")
msgbox(strokaItog)

Next n
parseMob=strokaItog
End Sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Правильнее макрос обернуть в функцию, но из топика не ясно в одной ячейке или нет исходные данные и куда они должны попасть. В целях просвещения - готов описать что каждая строка в макросе делает.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...