Dicas do Microsoft Excel é ao Domingo…no Pplware – 6
Objectivo: Dividir uma string (frase) em partes
Ora vivam caros leitores. Mais um Domingo e mais uma artigo da rubrica “Dicas do Microsoft Excel é ao Domingo….no Pplware”.
Lembramos que esta é uma rubrica “aberta” a todos os leitores que pretendam contribuir. Para tal devem enviar-nos um e-mail com a dica que pretendem ver publicada. Caso tenham também alguma dúvida ou problema a resolver no Excel, deixem essa informação nos comentários para que a comunidade Pplware ajude a resolver.
Antes de passar ao tutorial propriamente dito apenas frisar uma situação. Sendo nós um site em português, vamos tentar indicar sempre as funções do excel em português e também a respectiva função em inglês.
São várias as ocasiões em que temos a necessidade de dividir uma string (frase) em várias partes, de modo a que cada uma das partes seja colocado numa célula distinta. Dependendo do “conteúdo” da string, são várias técnicas que podemos usar para fazer essa separação. No entanto, o Excel disponibiliza a função COMPACTAR (TRIM para o excel em inglês) que permite de uma forma muito simples e rápida dividir uma string com base num caracter definido.
Vamos então considerar o seguinte exemplo. O objectivo é separar o nome da localidade que está na primeira coluna e colocar essa informação em separada na coluna B e C, respectivamente.
Formula a inserir na coluna B2: =COMPACTAR(ESQUERDA(A2;LOCALIZAR(",";A2)-1))
Explicação das funções usadas:
- COMPACTAR(texto) – Remove todos os espaços de uma cadeira de texto, à excepção de espaços simples entre palavras
- ESQUERDA(texto;num_caracter) – Devolve o número especificado de caracteres do inicio de uma cadeia de texto
- LOCALIZAR(texto_a_localizar;no_texto;num_inicial) – Devolve a posição de partida de uma cadeia de texto dentro de outra. Esta função é sensível a palavras maiúsculas e minúsculas.
Formula a inserir na coluna C2: =COMPACTAR(DIREITA(A2;NÚM.CARACT(A2)-LOCALIZAR(",";A2)))
Explicação das funções usadas ( e ainda não referidas):
- DIREITA(texto;num_caracter) – Devolve o número de caracteres do fim de uma cadeia de texto
- NÚM.CARACT(texto) – Devolve o número de caracteres de uma cadeia de texto
E está feito. Para as restantes linhas vasta usar o método da actualização ensinado no Actualização da formula de acordo com a linha e coluna.
Por hoje é tudo…esperamos que as dicas sejam úteis e que vos ajudem a dominar o Microsoft Excel. Como referi anteriormente, esta dica está aberta a todos os que pretendam contribuir. Enviem-nos as vossas dicas para ppinto @ pplware .com para publicarmos em próximos artigos.
Artigos relacionados
- [1] Operações básica: SOMA, MÉDIA, MÁXIMO, MINIMO
- [2] Actualização da formula de acordo com a linha e coluna
- [3] Referências fixas
- [4] Utilização de formulas e valores em várias folhas
- [5] Destacar facilmente valores em Excel
Download: Ficheiro Excel utilizado (aqui)
Este artigo tem mais de um ano
Excelente!
Não conhecia esta função e dá bastante jeito!
Normalmente é necessário fazer uma procura nas funções que se encontra o que se precisa. Por vezes é um conjunto de funções e aí deve-se usar a cabeça…
http://help.libreoffice.org/Calc/Text_Functions/pt
Existe uma solução que resolve o problema colocado sem usar funções (M$Excel 2010).
Suponha-se que (separador “;” ou “;” ou outro)
B1<= Nome; Idade; Género; Localidade
B2<= José;18 anos;Masculino;Porto
…
Seleccione-se B1:B2
Menu dados, texto para colunas; delimitado
Botão seguinte e escolha-se o delimitador (no caso ";")
Botão concluir ou escolher o tipo de dados para cada coluna.
O intervalo de células B1:E2 conterá a resposta.
Excelente!!!!!!, PPLWARE está de parabéns. A série de tutoriais é tão boa que as estou a guardar! É o melhor “jornal” diário que existe em Portugal! Transmite cultura, ensinamentos, boa disposição, contrariamente aos outros que nada ensinam lançando noticias de terror e inúteis!
Obrigado Jorge pelos elogios. O espaço Pplware é de todos nós 🙂
Uma das funções que mais uso é o Vlookup. Aqui fica o desafio para um dos próximos artigos.
Boas Pedro A., queres fazer tu esse post? A comunidade Pplware agradece. Abraço
Vê o próximo artigo de VBA que irá sair pois mostra como usar a função VLOOKUP (embora não seja o principal objectivo do artigo)
Eu posso fazer uma “versão portuguesa” do meu artigo, do meu blog:
http://www.excel-user.com/2009/10/vlookup-get-value-based-on-another.html
Querem?
João Pinto
vamos lá João. Encontrar as funções em PT já é por si um desafio 🙂
Pode ajudar
http://fazaconta.com/excel-ingles-portugues.htm
http://eduardofarias.wordpress.com/2009/09/23/excel-ingls-portugus/
Viva João.
Parabéns pelo blog.
Guardei logo tal é o manancial de de informação.
Mais algumas formulas em PT vs ING
http://www.portugal-a-programar.org/forum/index.php/topic,47764.0.html
pessoalmente penso que é má política a tradução das funções por parte da Microsoft…ou então ser possível usar simultaneamente em vários idiomas
100% de acordo. Seria muito mais prático usar sempre o mesmo nome de funções, independentemente da versão. Assim, obriga a um maior esforço de aprendizagem, especialmente para quem migrou de outras versões ou de outros programas semelhantes.
Em vez de
“Mais algumas formulas em PT vs ING”
Deve ler-se
“Mais algumas formulas em BR vs ING”
Excelente dica!
É bastante prática.
Eu tenho ambos os “language packs” instalados do Office 2010 pelo que posso fazer os ficheiros/fórmulas em inglês, que é o que estou habituado a trabalhar, e depois alterar a linguagem do Office para PT e ver os respectivos nomes das funções e dos comandos. Assim é bem mais fácil 🙂
Para quem tem LibreOffice aqui vídeo (http://youtu.be/PZg3Xl7lsjg) que serve perfeitamente para quem tem M$Excel. Em termos de tradução das funções, a versão de Calc para windows está totalmente traduzida para português, enquanto que a versão que estou a utilizar na minha distribuição Linux (Ubuntu) apenas algumas funções estão em Português. Como podem verificar, em relação ao M$Excel, a única função como nome diferente é: Procurar/Localizar
excelente dica, mas acho um pouco estranha a tradução de formula da MS. Aqui no Brasil a forma se escreve “Arrumar” e ficando algo do tipo “ARRUMAR(ESQUERDA(A3;PROCURAR(“,”;A3)-1))”
Pessoal! Ajudinha sff 😉
Queria criar umas caixas de texto em que na mesma célula dê para o utilizador escolher numa espécie de drop-down as várias hipóteses, por exº:
Em A1 (cabeçalho): Tipo de combustível
B1: o tal drop-down com: gás natural, propano, nafta, etc….
alguém que me aponte para uns links? é que nem sei bem como isto se chamará…(será uma coisa deste género o que preciso? http://www.techrepublic.com/blog/msoffice/create-an-excel-data-entry-form-that-includes-check-boxes/203)
abraço
Podes dar uma vista de olhos ao meu artigo sobre “Cascading Validation Lists” aqui:
http://www.excel-user.com/2011/02/cascading-validation-lists.html
A ideia é teres, por exemplo, uma lista de países, escolhes um, e depois, numa segunda lista, aparecem-te apenas cidades desse país.
Espero que ajude.
João Pinto
Julgo que a solução pretendida passa por validar a célula ou células que vão conter o valor escolhido.
Primeiro devemos criar (na mesma folha) uma tabela com os valores posíveis (gás natural, propano, nafta, …)
Imagine-se o intervalo J1:J3 com esses valores
Com a célula B1 seleccionada ir a dados; validação de dados. No separador definições defina o critério de validação por lista e no campo origem indique-se $J$1:$J$3
Se entender necessário, utilize os outros dois separadores para dar aspecto profissional à validação.
Bom dia a todos,
Muito obrigado pela ajuda. A ver se ainda durante a manhã consigo dedicar-me a explorar as soluções por vós propostas.
Qualquer dúvida, já sei a quem recorrer!
Os meus cumprimentos,
Vitor Ferreira
Muito obrigado a ambos! para já a solução do José Augusto está a chegar-me para as encomendas, mas lá mais para a frente acho que tb tenho de a do João Pinto 😉
abraço e os meus cumprimentos
Caro João Pinto,
No seguimento do conceito de cascading, será que o excel permite o seguinte “twist”:
Empresa com N produtos, onde escolho N pelo método do José Augusto. Depois, mediante N, apareciam-me ao lado (do tipo eram inseridas automaticamente) N células novas onde eu podia fazer a descriminação destes produtos.
Se N fosse 1, só me surgia 1 célula nova, se N, N células novas na mesma linha (estou a fazer 1 linha para cada empresa)…
é que assim ficava + “jeitosinho” e não tinha que deixar N células em branco para serem ou não preenchidas.
Isto será exequível?
Desde já os meus agradecimentos a qualquer pointer que me possa dar 😉
Isto só será possível de fazer com código! Mas a sua ideia é na 1ª coluna selecionar N, conforme o valor de N, acrescentar x colunas para preencher? E o resto das células? Ficavam protegidas? É que as colunas já lá estão todas, queria apenas permitir preencher x colunas, dependendo do valor de N escolhido?
Viva,
Pois, já suspeitava que teria de levar código…mas, e se ao invés de ter de criar/adicionar células, se recorresse à função hide? – reservava umas quantas células que só apareceriam consoante o N seleccionado anteriormente. Será que isso simplificava as coisas?
Caro João Pinto, novamente, o meu muito obrigado
Como lhe digo, as colunas estão lá todas…e fazia o hide a todas as colunas até ao fim da folha?
Viva,
Eu não estou a fazer por colunas, é por linhas (não sei se isso faz alguma diferença. Do género:
Em A1 tinha a tal célula com as N hipóteses (com N a ser feito pelo outro método). Escolhia, por ex 2 e em A2 e A3 (que estavam escondidas/reservadas), elas então apareceriam para o utilizador poder inserir os dados
vou inventar aqui largo, mas qqr coisa do tipo: If A1 = N com N=1, then…qqr coisa…unhide(B1:D1)
Peço desculpa pelas asneiradas que aí hei-de ter posto, mas programação não é de td o meu forte…
Oh, agora é que estou a fazer um pouco de think ahead e isto não vale a pena…
mesmo que conseguisse isto de esconder as células “on-demand”, se por ex na linha 1 tiver uma empresa com 5 prods, vou ter 5 células para isso; mas já se a empresa 2 (na linha 2) só tiver 1 produto (que iria “mostrar apenas 1 célula”, vão-me aparecer, muito provavelmente, na mesma 6 células por causa da empresa anterior, estragando-me o “arranjinho”
Deixe lá João Pinto, não se preocupe mais com isto!
Tenho é de lhe agradecer imenso pelo apoio prestado 😉
Grande abraço
Boas e boas dicas!
Tenho tentado sem sucesso adaptar isto que aqui está a uma necessidade que tenho, passo a explicar, tenho um xls com diversa legislação e na coluna A tenho uma abreviatura do tipo de diploma legal (texto) por exemplo RCM para Resolução do Conselho de Ministros, na coluna B tenho a referência desse diploma, por exemplo 22/99, tratar-se-ia então da Resolução do Conselho de Ministros nº 22/99, mais adiante pretendia de forma automatica o nome que vou atribuir ao ficheiro, neste caso pretendia que ficasse RCM_22_99.
Portanto o que pretendia era concatenar as duas primeiras colunas separadas por um “_” mas queria ainda que os valores da coluna B fossem também separados por um “_”, usando a função de separar o texto para colunas consigo separar o “22/99” e depois fazer um concatenar simples, mas o que pretendia era obter o mesmo resultado sem estar a usar novas colunas.
Alguma dica?
Obrigado.
Esqueci-me de um “pormenor”, o número de caracteres dos dois elementos do número do diploma não é fixo, isto é, o exemplo que dei “22/99” seria algo como localizar e devolver os dois caracteres à esquerda e à direita do “/” mas posso ter algo como “145352/2006″, precisava então de alguma coisa que devolvesse tudo que (pseudocódigo):
=concatenar (A1;”_”;o que está em B1 à esquerda do “/”;”_”;o que está em B1 à direita do “/”)
😛
Use a fórmula:
=A1 & “_” & ESQUERDA(B1;PROCURAR(“/”;B1;1)-1) & “_” & DIREITA(B1;NÚM.CARACT(B1)-PROCURAR(“/”;B1;1))
que transforma A1=”RCM” e B1=”22/99″ em C1=”RCM_22_99″
Julgo que era isto que pretendia.
Infelizmente continua a mostrar o erro:
#Nome?
🙁
= “Obrigado” & “Miguel Goyanes” & “e” & “José Augusto”
Com uma “mistela” das ajudas dos dois funcionou 🙂
Divulgue esta dica, por favor:
Para completar com espaços a direita de uma célula qualquer utilize o seguinte, substituindo o ‘cc’ pelo endereço da célula de origem do string desejado e ‘nn’ pelo tamanho total do string desejado:
=ESQUERDA(cc&REPT(” “;nn);nn)
Situação prática: você precisa gerar registros para um arquivo TXT com campos de tamanho fixo em que entrem nomes de pessoas e outras informações como:
col 1 até col 5 – matricula (numérico com mascara “00000”
col 6 até col 35 – nome (alfabético de tamanho variável com espaços a direita)
col 36 até col 40 – valor da mensalidade (com mascara “00000”, sendo as duas ultimas casa as decimais)
Ex.
Registros com o resultado esperado, que vai ser colado no arquivo TXT (recomendo que utilizem o notepad2 para o arquivo TXT pois é infinitamente melhor que o notepad da MS)
“00111JOJOBA GURUPI 12234”
“00993MARICOTI KATITA TUMB 14534″
Os dados dos campos serão obtidos nas colunas A (matricula), B (nome) e C (mensalidade), linhas 1 e 2
111 |JOJOBA GURUPI | R$122,34
993 |MARICOTI KATITA TUMB | R$14534
Para obtermos os strings, na coluna D linha 1 colocamos as seguintes fórmula:
TEXTO(A1;”00000″)&ESQUERDA(B1&REPT(” “;30);30)&TEXTO(C1*100;”00000”)
para finalizar, copia-se o conteúdo de D1 para D2. Feito isto é só copiar o conteúdo da coluna D e colar no arquivo TXT. cada linha já é finalizada com CR+LF. Se estiver usando o notepad2, ele permite que as linhas sejam finalizadas no modo Unix (só LF) ou Mac (só CR)
Abraços