aberturas bancas esporte historia informatica latim olimpiada ondestão poker revista statistics tradução winchester winword xadrez

Planilhas, o primo pobre da informática

Sabe daquelas invenções bem diante de nosso nariz cujo poder às vezes não percebemos? Cheguei à epifania de o Excel ser, basicamente, uma enorme metáfora para uma linguagem de programação. Exagero? Vou fazer uns comentários em relação a meus usos recentes desta ferramenta. Embora a IA tenha facilitado bastante a programação em linguagens mais tradicionais, reduzindo a curva de aprendizado enormemente, em muitas ocasiões a navalha de Occan resolve: a solução mais simples geralmente é a melhor.

Esta propaganda da Microsoft nos anos 1990 valoriza, como seria de se esperar, os enrolados: aquele tipo de gente torpe que não respeita o tempo alheio e acha que a pressão dos prazos os fazem trabalhar melhor. Os influenciadores que querem vender cursos usam retórica parecida, alegando que são os preguiçosos que fazem as soluções eficientes surgirem. Só esquecem de falar que os procrastinadores procrastinam tudo, inclusive a busca pelo conhecimento necessário para ganhar tempo e encontrar atalhos em tarefas chatas. Mas tergiverso.

Mas o que me leva a afirmar que o Excel dialoga tão intimamente com linguagens de programação? Vamos aos paralelos: cada célula é uma variável (nem declará-las antes de usá-las você precisa); as fórmulas são linhas de comando que podem referenciar as células (ou variáveis, em nossa analogia). Os laços condicionais também estão lá, com =se, =cont.se, =cont.ses e por aí vai. E conforme o usuário se familiariza com as fórmulas, vai percebendo a diferença entre string e número. São como argila para certas fórmulas. E até bibliotecas estão disponíveis em nossa metáfora: as fórmulas de Excel são categorizada em ‘Matemática’, ‘Financeiro’, ‘Texto’, entre outros. Até operadores lógicos se encontram lá.

Além disso, fórmulas como =procv ou =proch fazem, de certa forma, o papel de bancos de dados relacionais, já que permitem que o usuário informe apenas valores que estão disponíveis em outra planilha no arquivo. Pensemos assim: se eu quero cadastrar um cliente de uma locadora de vídeos, para quê elencar todos os dados pessoais do cliente toda vez que eu cadastrar uma locação, com data de retirada e de devolução? Não é mais fácil deixar os dados pessoais de cada cliente em uma tabela e apenas referenciá-la em outra tabela, para que eu sempre lance um cliente que existe? Pois é, acabamos de falar do conceito de banco de dados relacional, não é? Confiram abaixo o print de uma de meus arquivos, que demonstra isso:

Trabalhei em uma garagem em que a equipe não possuía um sistema sério para gerir as viagens que realizava, então improvisavam toda a operação com uma planilha de Access capenga que já não funcionava direito, após quase dez anos de uso. Propus, então, a solução acima. É claro que uma planilha de Excel, em operações gigantes, não são suficientes, mas para uma frota de cerca de 70 veículos, era o suficiente. Criei as seguintes abas em verde, cuja cor escolhi para indicar que são de edição frequente e que puxam dados das planilhas em amarelo:

  • Mul: as multas dos motoristas são registradas aqui;
  • VGM: as viagens são registradas aqui;
  • PNE: as condições dos pneus são registradas aqui. Nem isso a garagem fazia: não tínhamos paquímetros nem máquina para marcação de pneu a ferro, para evitar, digamos, apropriações indébitas nas estradas dos rincões mais esquecidos desse país;
  • CRE: as credenciais das pessoas autorizadas a dirigir, que não os motoristas, são registradas aqui.

Vamos agora às planilhas em amarelo. Só devem ser editadas em ocasiões especiais, como aquisição de veículos novos ou venda dos veículos da frota, os locais cadastrados para viagem, os motoristas contratados pela empresa e os veículos da frota. Em nosso caso, criei a aba Veic+ para registrar informações relevantes que não são de uso frequente. E as abas em vermelho contêm informações inalienáveis, como as cidades em que os veículos podem rodar, os códigos das infrações, entre outros. As credenciais possuem um comprovante gerado na aba CRE_IMP, cujos dados são importados da aba CRE. A aba CRE_IMP nunca é editada; tudo que se faz aqui é informar uma chave única da pessoa cadastrada, para que todos os dados da pessoa sejam importados de CRE e o comprovante seja gerado.

Para não me delongar em detalhes, vou me deter a descrever a aba MUL, apresentada no print acima. Como ela foi organizada? Para começo de conversa, uma multa está sempre associada a um motorista. Os nomes destes foram elencados em uma lista suspensa, mas não lançamos os dados manualmente; simplesmente importamos da aba MOT informando este intervalo na lista suspensa: =MOT!$A$6:$A$60

Para quem não sabe, o ‘$’ trava uma célula informada. Quando se copia uma célula várias vezes, o Excel tende a atualizá-la de forma incremental. Se eu copio uma fórmula, que cita a célula A6, dez vezes, na planilha vai ficar a fórmula, e as células serão: A7, A8, A9… para evitar isso, use ‘$’. Se quer travar apenas a letra da célula, use ‘$’ antes da letra; se quer apenas o número após a letra da célula, use ‘$’ depois. Geralmente as pessoas precisam travar ambos, então use dois ‘$’ ou aperte F4 no teclado. Dessa forma, não importa quantos motoristas eu cadastre em MOT com o tempo; eles sempre aparecerão atualizados na aba MUL.

O mesmo raciocínio vale para a primeira coluna, ‘placa’. As placas são importadas da aba VEIC. Não preciso saber todos os dados do veículo, como marca, modelo, carroceria; basta informar a placa aqui.

O restante das colunas podem ser abertamente preenchidas pelo usuário com o que ele precisar, exceto a coluna ‘Município’, que importa estes da planilha MUN. São mais de 5500 atualmente, então é uma boa ideia ter esta relação contigo. A planilha MUL possui outras colunas, como ‘código da infração’, que não convém abordar agora.

A planilha CRE_IMP.
A planilha CRE.

Agora vou abordar a planilha CRE_IMP. É possível travar a edição de quantas partes da planilha você quiser, pois o usuário só precisa preencher uma informação, a célula B2, ao lado do texto ‘Número do registro’. O número que for informado vai importar um dos dados disponíveis na planilha CRE. Como abrir um livro no sumário, verificar em que página um capítulo está, e abrir o livro na página indicada. Todo o resto dos dados da pessoa serão trazidos para CRE_IMP, e aí basta gerar um PDF ou imprimir conforme necessidade. Mas como isso é feito? Isso é feito com uma fórmula um pouco mais complicada do que meramente criar listas suspensa, como feito até agora. Aqui, vamos usar =procv. Queremos os dados de uma pessoa, mas queremos que cada coluna da tabela de origem seja exibida em um ponto diferente da planilha CRE_IMP. Esta fórmula pode exigir um pouco de tentativa e erro, mas persevere: o resultado fica muito legal. Muitos especialistas em Excel recomendam usar outras fórmulas mais eficientes, mas para começar =procv cumpre bem seu papel.

De B3 a B15, vamos usar =procv. A célula B2 (ou variável, na nossa metáfora de linguagem de programação) vai receber um valor que você informar. Abaixo, listamos apenas a fórmula na célula B3. Se você digitou o comando com sucesso, bastará copiar para as células restantes.

=PROCV($B$2;Credenc;{2}; FALSO())

Vamos destrinchar este comando. $B$2 é a célula que vai receber o número do registro que a fórmula precisa para importar os dados da planilha CRE. Após ‘;’ temos ‘Credenc’. O que significa esta palavra? Ela nada mais é do que o nome que eu dei à tabela na planilha CRE. Pense nesta tabela como o dataframe que linguagens de programação como Python usam. Em vez de você precisar fuçar nas pastas do seu computador, está tudo no mesmo arquivo. Então, já que você pode escolher um nome para suas tabelas, escolha um que seja intuitivo para você. Observe o print da planilha CRE. Antes de fazer qualquer coisa, crie uma tabela pré-criada no Google planilhas ou o programa que você estiver usando. Uma tabela como esta será criada, e você escolhe o nome que aparece acima das colunas. Embora seja opcional criar tabelas, é bastante recomendável, para o código ficar mais intuitivo.

A seguir, temos {2}. Este número indica de qual coluna você quer puxar os dados do registro selecionado. Repare que, na tabela Credenc dentro da planilha CRE, ‘nome’ é a segunda coluna. E é exatamente isso que =procv exibe para mim na planilha CRE_IMP. Como num passe de mágica. E a propósito: o último parâmetro, ‘FALSE’, é opcional. Não precisamos dele agora.

Outra tarefa mais mundana que eu automatizei foi o controle de chaves de meu trabalho atual. A princípio, pensei em simplesmente comprar uma planilha já feita por uma boa alma, mas à medida que acompanhava o walkthrough do autor, percebi que dava conta de fazer uma eu mesmo. Nesta aqui eu preparei um painel inicial, para os usuários terem um panorama.

Cada número informado no print acima foi providenciado com as fórmulas, respectivamente:

  1. =CONT.VALORES(unique(CadChaves[Chave]))
  2. =SOMA(CadChaves[Qtd cópias])
  3. =SOMASES(‘Empréstimos’!E:E; ‘Empréstimos’!A:A; “Emprestado”)
  4. =CONT.VALORES(CadPessoas!A2:A)
  5. =CONT.VALORES(unique(‘Empréstimos’!D2:D))
  6. =CONT.SE(‘Empréstimos’!C2:C; L7)

A planilha CadChave possui as colunas: Código Chave; Tipo; Qtd cópias; Emprestados; Disponíveis; Responsável; Observações. Código Chave é a chave primária, então cada chave deve possuir um identificador único. A coluna tipo possui um menu suspenso com apenas três opções: Porta, armário ou cadeado. Da minha experiência, chaves de armário ou de cadeado são raríssimas, mas é a realidade de seu local de trabalho quem dirá isso. A coluna ‘Responsável’ atribui a uma pessoa a missão de responder pelo uso daquela chave, e os nomes são importados da planilha CadPessoas, com um menu suspenso. Por fim, as colunas ‘Emprestados’ e ‘Disponíveis’ possuem fórmulas, para que se saiba sempre quantas chaves de uma determinada sala foram emprestadas, sem a necessidade de atualização manual.

  • =SOMASES(‘Empréstimos’!E:E; ‘Empréstimos’!D:D; B2; ‘Empréstimos’!A:A; “Emprestado”)
  • =D2-E2

A planilha CadPessoas, cujos nomes são usados pelas planilhas CadChave e Empréstimos, possui as colunas: Nome; Qtd empréstimos; Telefone; E-mail. Na confusão do dia-a-dia, na experiência que tive, se metade das pessoas responsáveis pegar a chave de sua responsabilidade, é muito. Para casos assim, use o campo Observações para informar por escrito quem retirou a chave. As pessoas esquecem com frequência de devolver chaves, especialmente quando não são elas as responsáveis pelo uso do espaço.

A planilha Empréstimo possui as colunas: Situação; Data; Pessoa; Chave; Qtd emprestada; Observações. A coluna ‘Situação’ possui um menu suspenso com duas opções, Emprestado e Devolvido. Não é preciso criar um registro para um empréstimo e outro separado para devolução. Na verdade, uma chave não pode ficar registrada como emprestada para sempre, então à medida que as chaves forem sendo devolvidas, retorne ao registro da chave emprestada e mude a situação para ‘Devolvido’. Rapidamente a equipe que usar a planilha constatará quem ainda não devolveu uma chave.

A coluna Pessoa importa os nomes em CadPessoas para formar uma lista suspensa, e o mesmo é feito na coluna Chave com a planilha Cadchaves. O restante das colunas é preenchida manualmente.

E em algumas ocasiões, quando os dados já estão disponíveis, você pode deixá-los mais visuais com mapas de calor. Aqui, nem fórmula você precisa usar; basta configurar uma formatação condicional usando a opção ‘Escala de cores’. Deixe o Excel fazer por você o trabalho pesado de usar cores para definir o peso de certos dados. No mais, a coluna ‘Docente’ importa os nomes do corpo docente de outra planilha, e em ‘Tempo sem at’, em que informo há quanto tempo o currículo Lattes não é atualizado, a fórmula é simples: =HOJE()-B2. Todos os números são gerados por fórmulas como esta: =CONT.SE(Prod!A:A;A2). Aqui, peço para que uma contagem seja feita em outra planilha, e que seja contado quantas vezes o valor em A2 aparece na outra planilha.

Se esse critério não for o bastante para você, temos também =CONT.SES, que permite estabelecer mais critérios. Basicamente, um laço condicional, voltando à minha metáfora do começo do texto. Na coluna à direita de ‘Prod’, ‘Prod_B1’, eu quero que a produção de um docente seja contada (primeiro critério), mas apenas das revistas científicas B1 (segundo critério). A fórmula fica assim: =CONT.SES(Prod!A:A;A2;Prod!G:G;”B1″). Os dois primeiros argumentos são os mesmos da fórmula anterior, e mais dois argumentos são adicionados (intervalo a ser contado e critério para realizar a contagem, nesta ordem).

Por esse post é isso. Em outra oportunidade, posso falar de como tratar strings e botar ordem em dados aparentemente ilegíveis. See ya!

Publicado por


Deixe um comentário