Microsoft Excel - Dúvidas e Suporte

Olá.

Tenho um ficheiro em que existem mais de 5000 linhas com números de informação, em que necessito de colocar / e completar ano.
Neste ficheiro tenho dados de diferentes tamanhos.
Tenho já colocada a formula: =CONCATENAR(ESQUERDA(A1;5);"/AP/20";DIREITA(A1;2))..... mas tenho que ir mudando de acordo com o tamanho do numero que necessito de alterar.
Coloco exemplos e o que pretendo:
"Numero" "Converter"
279464AP2227946/AP/2022
30003AP2330003A/AP/2023
10046AP2310046/AP/2023
17AP2317/AP/2023

Consigo de alguma forma criar uma variavel que identifique como aplicar.
O numero maximo será de 6 digitos na esquerda e o minimo de 2 digitos.
No caso do final será sempre de 2 digitos que se transforma nos 4 de ano do numero.
Conseguem por favor ajudar.... acredito que possa ser simples, mas não consigo chegar a uma forma de simplificar.
Tenho varios ficheiros com muitas linhas identicas às de numero e tenho de converter .... coloco abaixo exemplo do ficheiro base (que tem em regra cerca de 5.000 linhas, com dados desalinhados)

Símb.prtds.em aberto/compContaAtribuiçãoNº documentoData de lançamentoMontante em moeda internaTextoApóliceReciboProcessoBloqueio pgto.Doc.compensaçãoGIS
33313700052846
44977​
2,91​
30 Comissão De Angariação Paga6169923123456AP2312345/AP/20232100001271
#N/D​
33313700054484
44979​
-45,9​
30 Comissão De Angariação Paga000259712345AP231234/AP/20232100001271
#N/D​
33313700077414
44998​
10,08​
30 Comissão De Angariação Paga63292221234AP231234/AP/20232100001271
#N/D​
33313700077478
44999​
-72,79​
30 Comissão De Angariação Paga7949822123AP23123AP/AP/20232100001271
#N/D​
33313700077699
45000​
-45,46​
30 Comissão De Angariação Paga920192212AP2312AP2/AP/20232100001271
#N/D​

Agradeço as vossas dicas/sugestões de como consigo simplificar esta tarefa

Obrigado pela ajuda
 
Última edição:
@jopedrocha se as letras desses códigos forem sempre as mesmas, é facil:

Para os numeros à esquerda:
Código:
LEFT(A1; FIND("AP"; A1) -1)

Para as letras:
Código:
MID(A1; FIND("AP"; A1); 2)

Para os numeros à direita:
Código:
RIGHT(A1; LEN(A1) - FIND("AP"; A1) - 1)

Para o caso das letras não serem as mesmas mas serem só duas e no mesmo formato (numeros letras numeros), em vez do
Código:
FIND("AP"; A1)

Podes usar:
Código:
MATCH(TRUE;ISERROR(VALUE(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)));0)
 
LEFT(A1; FIND("AP"; A1) -1)
=CONCATENAR(ESQUERDA(I2; FIND("AP"; I2)-1);"/AP/20";DIREITA(I2;2))
..... será algo assim que referes??

Para alterar
279464AP22 ...... ficar 27946/AP/2022
30003AP23 ..... ficar 30003/AP/2023
10046AP23 .... ficar 10046/AP/2023

Peço desculpa pela "burrice", mas não estou a conseguir chegar ao resultado.
A formula na minha tentativa está a falhar :(
 
Sorry, não tinha entendido bem o que pretendias. Pensei que era simplesmente separar os numeros das letras... 😅

A formula que indicas deverá resolver a situação, embora tenhas aí o find em inglês e o resto em português.

Eu não costumo usar o Concatenar. Uso o & e serve bem para juntar valores:
Código:
=LEFT(A1; FIND("AP"; A1) -1) & "/AP/20" & RIGHT(A1; 2)
 
Malta uma ajuda:

- Estou a fazer um Procx, em que o valor a procurar está na coluna A e retorna a coluna C. Acontece que por vezes a célula na coluna C não tem valor (está em branco) e no resultado ele devolve 0. Há maneira de solucionar isto? É que depois tenho médias a correr em colunas e se tiverem 0 acaba por contar para a média.
 
Malta uma ajuda:

- Estou a fazer um Procx, em que o valor a procurar está na coluna A e retorna a coluna C. Acontece que por vezes a célula na coluna C não tem valor (está em branco) e no resultado ele devolve 0. Há maneira de solucionar isto? É que depois tenho médias a correr em colunas e se tiverem 0 acaba por contar para a média.
A fórmula está na coluna C a procurar valores na coluna A, certo?
Arrastaste a fórmula para as várias células da coluna C? Se sim, certifica-te que bloqueaste (na fórmula) o range da coluna A onde pretendes procurar o valor.
 
A fórmula está na coluna C a procurar valores na coluna A, certo?
Arrastaste a fórmula para as várias células da coluna C? Se sim, certifica-te que bloqueaste (na fórmula) o range da coluna A onde pretendes procurar o valor.

Já consegui contornar a situação:

=SE.ERRO(SE(PROCX($A17;SEARCH;RETORNO)="";"";PROCX($A17;SEARCH;RETORNO));"")

Assim se o valor a retornar for o que está numa célula vazia, retorna vazio. Se estiver qualquer coisa diferente de vazio retorna o valor.

Obrigado!
 
Bom dia,

Cá estou eu novamente, já tentei procurar na net mas como também não sei o nome da função e não sei se existe... deixo aqui um pedido de ajuda

Eu tenho várias folhas de excel no mesmo ficheiro, só que para procurar a folha que quero tenho de andar para um lado ou para outro até encontrar a folha que preciso.

A minha ideia era criar uma folha que fosse o índice das outras folhas, assim eu abria essa folha inicial escolhia o que pretendia e ele abria aquela folha depois.

Será possível isto?

Obrigado a todos
 
yrxyscY.png


Estas linhas começam todas por "2.", há alguma forma rápida de alterar para "3."?
 
Estas linhas começam todas por "2.", há alguma forma rápida de alterar para "3."?
Em inglês:
="3"&RIGHT(A1;LEN(A1)-1)
Em português:
="3"&DIREITA(A1;NÚM.CARACT(A1)-1)

Traduzindo a fórmula em texto: Juntar "3" com os caracteres à direta do texto original, usando todos os caracteres menos o primeiro.
 
Não é elegante, mas podes fazer numa coluna ao lado:
+3&SEG.TEXTO(seleciona a célula;2;10)
Em Inglês seg.texto é a função MID.
Há que ter algum cuidado, pois ao colocares 10, estás a assumir que não tens mais de 10 caracteres. Se tiver mais, vai falhar. Não é uma fórmula "universal" como a que coloquei no post imediatamente antes deste.
 
Não é elegante, mas podes fazer numa coluna ao lado:
+3&SEG.TEXTO(seleciona a célula;2;10)
Em Inglês seg.texto é a função MID.
Consegui utilizar e resultou.
Em inglês:
="3"&RIGHT(A1;LEN(A1)-1)
Em português:
="3"&DIREITA(A1;NÚM.CARACT(A1)-1)

Traduzindo a fórmula em texto: Juntar "3" com os caracteres à direta do texto original, usando todos os caracteres menos o primeiro.
Tentei esta fórmula mas acho que não estou a conseguir aplicar. Está a falhar-me alguma coisa.
 
Back
Topo