Como @ygaft apontou, é possível, mas será longo com as funções padrão do Excel.
Eu uso o suplemento gratuito RegEx Find / Replace em situações como essa, usando uma expressão regular você pode conseguir mais fácil.
A fórmula: =RegExReplace(RegExReplace(A1,".*U([0-9]+)-S([0-9]+)-P([0-9]+)","0$1-0$2-0$3"),"0([0-9]{2})","$1")
Como funciona:
- função interna:
-
A1
: do conteúdo da célula A1 -
".*U([0-9]+)-S([0-9]+)-P([0-9]+)"
procura um padrão "... U # -S # -P #" onde "#" representa um ou mais números e lembra os números (colchetes criam grupos de referência) -
"0$1-0$2-0$3"
mescla os números encontrados na etapa anterior, adicionando 0 à frente a todos eles.
-
- função externa:
-
RegExReplace(...)
- funciona com resultados da função interna -
"0([0-9]{2})"
- procura por 0 seguido por dois dígitos (= casos em que 0 não é necessário) -
"$1"
- mantém apenas os dois dígitos, descartando 0 (somente nos casos que foram correspondidos na etapa anterior)
-
Vocêtambémpodevermaisexplicaçõessobreasexpressõesregulareson-line:
- primeiropasso:
link - segundo passo: link
Observação: não sou afiliado de forma alguma com esse suplemento, apenas use-o para facilitar minha vida.
Atualizar
Você pode usar essa fórmula para seu código de 13 caracteres:
=RegExReplace(RegExReplace(A3,".*-([A-Z])-[A-Z]([0-9]).*-([A-Z])-U([0-9]+)-S([0-9]+)-P([0-9]+)","$1$2-$3-0$4-0$5-0$6"),"0([0-9]{2})","$1")