Dica – Excel e Expressões regulares
Na sequência da rubrica Domingo é dia de dicas do Microsoft Word, decidi escrever uma pequena dica de como usar o Microsoft Excel juntamente com expressões regulares.
O PDF é um formato muito popular hoje em dia, sendo comum existir alguma aplicação que leia este formato em qualquer computador pessoal ou de uso público. Existem inúmeras ferramentas que convertem os nossos documentos para este formato, mas quando o que queremos é o contrário, as coisas nem sempre correm como gostaríamos.
Suponhamos que, tal como me ocorreu, gostaria de copiar uma pauta escolar recebida em PDF e calcular a média das notas. Quando tentei fazer isso, o formato da tabela perdeu-se completamente!
Para tabelas pequenas, é viável fazer tudo manualmente, mas no caso de pautas com dezenas ou centenas de linhas, torna-se extremamente penoso faze-lo. O problema acentua-se nos casos em que cada registo da tabela tem um número diferente de palavras, como mostra este exemplo. É aqui que entram as Expressões Regulares.
Queremos apagar tudo o que está antes do campo Turma, inclusive. Para começar, copiamos tudo para o Excel e abrimos a janela de pesquisa com CTRL + L (atalho da versão portuguesa).
Para este exemplo, vou inserir «*T?» no campo "Localizar" e vou deixar o campo "Substituir" em branco, para eliminar todas as ocorrências. Esta expressão tem um significado especial. O asterisco tem o significado de "qualquer sequência de caracteres", a letra T é lida literalmente e o ponto de interrogação é lido como "um carácter qualquer". Na prática, esta expressão corresponde a dizer "todos os caracteres até uma letra T, mais o caracter seguinte".
Depois só temos de substituir todas as vírgulas por pontos, se necessário, e temos finalmente uma coluna só com a informação pretendida!
O uso de expressões regulares está disponível em diversas aplicações além do Excel. A título de exemplo, posso indicar os programas da família Libre Office, ou o Notepad++. Para quem quiser averiguar um pouco mais sobre expressões regulares, sugiro a consulta da tabela seguinte.
Homepage: List of Regular Expressions
Este artigo tem mais de um ano
Excelente dica 🙂 Não conhecia.
Mas penso que o colar especial nalguns casos também funciona.
Expressões regulares são potentes!!!!
Por acaso, tive necessidade de utilizar expressões regulares na função VLOOKUP mas não consegui.
Desenvolvi umas macros em VBA (Excel), Perl (gnumeric) e OfficeBasic (LibreOffice) para ter esse comportamento.
Se alguém souber como se faz VLOOKUPs com regexp, apite! Tudo o que seja para simplificar é bem vindo!
Nitro PDF!
Boa dica e ilustrativa do uso das expressões regulares.
Neste exemplo é mais fácil selecionar no PDF apenas a coluna pretendida (clicando e arrastando o rato), fazer cópia e depois colar na folha Excel.
Por vezes não dá 😛
Ainda na aula passada o professor da Teoria de Computação falou-nos nisto e usou o exemplo do word e excel. Parece-me que as ER são algo potente.
Eu uso um programa chamado Able2Extract Pro que funciona que é uma maravilha.
Programa muito bom. Já experimentei outros e este é realmente o melhor.
Isso é que era uma rubrica de excel em paralelo com a do Word, mas eu sei que pedir é facil.
Bom trabalho, parabens
Boa!!! Considero-me um utilizador avançado de Excel e não conhecia as expressões regulares…
Agora um desafio: como é que replicas a mesma pauta em excel, ou seja, como é que voltas a ter os diferentes campos em colunas?
Assim de repente… estou a ver uma forma.
Usas esta forma para te veres livre da coluna do Número e do Nome, e depois usas a ferramenta de conversão de texto para colunas do Excel, usando o espaço como separador. Depois colas uma nova tabela igual a esta, e livras-te de tudo o que vem a seguir ao T maiúsculos, inclusive, ficando apenas com o Nome e o Número. Mais uma vez, usa o Excel para separar em colunas. Vais é ficar com muitas colunas para o nome, que podes unir, não sei como, agora 😀
Agora sei eu 🙂 usas a função concatenate para juntar as várias células necessárias.
Ex:
=concatenate(b2;” “;c2;” “;d2)
A minha maior dificuladade seria a de partir em colunas dado que o nome do aluno tem um conjunto variável de palavras.
Existem serviços e aplicações on-line que dão uma grande ajuda.
Por exemplo
http://www.techsupportalert.com/content/best-free-online-applications-and-services.htm#PDF-Tools
isso que foi aplicado no exemplo não se trata de mais nada do que “caracteres coringas” que existem desde as versões de 1980 para MS-DOS que já processam.
Tal procedimento do Excel “não comporta” expressões regulares, que pela definição de “Expressões regulares” se extende muito mais adiante do que foi apresentado aqui.
Quais são esses caracters antes do * (asterisco) e depois do ponto de interrogação(?) ? Não encontrei no teclado.
Não se trata exatamente de expressão regular (regex), o * e o ? foram utilizados como caracteres curingas.
Em regex estes dois caracteres tem significados diferentes.
Uma expressão regular que identifica trechos antes de Turma seria :
EXEMPLO 1:
Reconhece o trecho a ser apagado ou substituído
.+?(?=Turma)
EXEMPLO 2:
Reconhece todo o trecho e considera o trecho começando com Turma como sendo o grupo 1
^.+?(Turma.+$)
EXEMPLO 3:
Reconhece o trecho que começa com Turma e ignora o trecho anterior a turma
Turma.+$
https://rubular.com/r/ZPhpn5TRLiUtp4
——————————————————————————————————————————–
O regex pode ser utilizado em excel, editor de texto como notepad++, pspad ou linguagem de programação.
Por exemplo python.
# ————EXEMPLO 1————-
from re import sub
txt = ‘Código Nome Turma Nota’
txt = sub(‘.+?(?=Turma)’, ”, txt)
# ————EXEMPLO 2————-
from re import sub
txt = ‘Código Nome Turma Nota’
txt = sub(‘^.+?(Turma.+$)’, ‘\\1’, txt)
# ————EXEMPLO 3————-
from re import search
txt = ‘Código Nome Turma Nota’
txt = search(‘Turma.+$’, txt)