Excel – 4 décadas e a apatia dos programadores

Parabéns para o Excel! 40 aninhos de puro glamour, vindo da autosoma, passando pelos assistentes como o Clippy, gráficos instantâneos, tabelas dinâmicas, ribbon, script lab, etc., etc., etc… 40 anos, talvez mais velho que você, meu caro “internauta”.

Clippy, saudades, mas nem tanto
Clippy, saudades, mas nem tanto

Poucas ferramentas chegaram perto de habilitar o usuário de computador a produzir de forma tão otimizada quanto o Excel. Sim, estou falando do mercado corporativo, já que eu nem recomendaria que você pagasse uma licença de Excel só pra fazer sua lista de compras.

O Excel é [insira seu palavrão aumentativo preferido aqui] demais!

Mas… há um público específico que difere frontalmente desta perspectiva. Como faço parte deste grupo (sem compartilhar da opinião), neste texto, tomo a iniciativa de declarar o quão impopular é essa prática e como esse público poderia se beneficiar do seu uso.

Os programadores odeiam Excel

Ouso dizer que este é quase um axioma. Todo programador que conheci em quase todos os times os quais participei, expressavam um sentimento similar. Se havia exceções, elas eram sempre associadas aos que eram ou mais experientes ou próximas de analistas de negócios ou gerentes de projetos. Afinal, quem escapa de um bom relatório feito em Excel?

Passei muito tempo tentando entender o motivo da repúdia. Por um breve período, culpei o VBA. Para programadores de linguagens modernas (qualquer coisa orientada a objetos), o VBA é quase um insulto. Esse fenômeno tem explicação, que espero ficar mais claro mais tarde neste mesmo texto.

A conclusão foi a seguinte:

Excel não é para programadores (?)

Um gerente de projetos uma vez compartilhou um pensamento que fez sentido, e como bônus, ele também havia programado no passado.

Programadores têm um grande problema: eles não entendem ferramentas que não compilam.

Bem, o Excel não compila (esqueça o VBA por enquanto). Se alguma coisa não dá uma resposta positiva do tipo “sucesso”, o programador se sente perdido. Admito que esta é uma super simplificação de um problema maior, mas resume bem.

Ao abrir um Excel, o programador vê um grid, um dos controles mais poderosos e complexos na categoria interface de usuário. E isso é tudo o que eles veem. E é aqui que a oportunidade se perde. Se um analista de dados abre o Excel, ele vê um mundo de oportunidades. Uma célula é quase um universo em si se ela tiver acesso aos dados certos.

Ok, o sistema de fórmulas não é um Python (esqueça a fórmula PY por enquanto), mas se houver algo próximo de um “low-code” de sucesso, aqui está ele! E de quebra, é traduzido para uma quantidade quase obscena de idiomas, coisa que nenhuma linguagem de programação conseguiu.

Me faz pensar se o sucesso do Excel é o que incomoda, mas duvido desta premissa. Programadores são criaturas que, por dominarem certos conceitos de computação, sentem-se como os engenheiros do mundo moderno, e falam de cada programa como um mecânico fala do motor do seu carro, ou como um investidor de ações fala de como você está perdendo dinheiro na poupança, ou o nutricionista chato que diz que tudo o que você come engorda, ou o maromba da academia que diz que você está treinando errado, etc.

Acho que neste ponto o problema ficou claro.

O que o Excel consegue é ser simples para usuários não especialistas em computação, coisa que muitos programas que eles criam não conseguiram: criar um programa de sucesso.

O Excel forma programadores

Já tinha uma ideia parecida, mas tive uma epifania quando ouvi a opinião deste camarada:

Future of vibe coding | DHH and Lex Fridman (em inglês)

Este é apenas um corte e o assunto em questão é vibe coding, coisa que nem vou comentar aqui. Lá pelo minuto 2:30, ele faz uma referência ao processo de formação de um programador, mas também elucida como contadores, engenheiros, e outras profissões que processam dados conseguem através da ferramenta progredir naturalmente para a competência de produzir micro aplicativos, que é o caso do Excel.

Lembra quando falei sobre o trauma que programadores têm do Excel por causa do VBA? Pois então, é disto que estou falando. Contadores, engenheiros, advogados, analistas, todos têm acesso ao Excel e, quando rompem o limite do interesse, eles “progridem” para o VBA, criando um universo de “coisinhas” que basicamente sustentam muitos negócios. Com isso, todo tipo de microaplicação é possível, e ela não precisa de uma cara bonita, nem de um processo de distribuição complexo, o Excel já dá isso pra ela.

Esse potencial é o que a Microsoft não conseguiu substituir até hoje. Não tem PowerApps que consiga chegar perto. O usuário abre o Excel, adiciona algumas fórmulas, quando não é mais suficiente, abre o VBA e o céu é o limite. Lembre-se que o VBA pode chamar APIs do Windows diretamente.

Mas é aqui que está o pulo do gato. Se algumas das profissões citadas acima criaram um monstrinho em VBA e nunca mais voltaram para consertar, outros simplesmente se apaixonaram pelo trabalho e acabaram migrando para a profissão.

E nisto, eu me encaixo.

Saber Excel te faz um programador/profissional melhor

Para mim, tudo começou com o VBA. Admito que HTML e CSS tinham vindo um pouco antes, mas como a web ainda engatinhava, na minha rotina de analista o VBA fazia muito mais sentido já que o Excel era parte da minha rotina.

Daí, vieram as oportunidades, micro-aplicativos, gerenciadores de tudo o que possa imaginar, tudo cliente-servidor, etc., etc. Não muito mais tarde, já tinha decidido que minha carreira seria computação, software de preferência.

20 anos depois, mesmo tendo passado por papéis de liderança e arquitetura de software moderna (leia-se nuvem), o Excel me acompanha em praticamente todos os times em que trabalhei. Seja via algum tipo de extração ou manipulação de dados, relatório, ou mesmo automação, não era raro que alguns planilhas deixassem membros do time boquiabertos, por mais medianas que fossem. As situações eram muitas, de integrações com ferramentas, manipulação de arquivos, tudo. Web scraping então…

Um caso recente fez com que fosse destaque em uma das apresentações para o cliente, tudo por causa de uma UDF/macro + formatação condicional. Nas semanas seguintes, as mensagens no Teams não paravam pedindo ajuda para fazer algo parecido, mesmo um simples PROCV.

Logo depois, tarefas mais graciosas foram solicitadas, tudo porque este que vos fala podia automatizar coisas que vinham no Excel, enquanto outros membros da equipe, programadores ou não, mal passavam do autofiltro. Cheguei a ser chamado de “exército de um homem só”, ao qual respondi “bem que eu podia ser pago pelo trabalho de um exército”. (espero que meu gerente não esteja lendo isto [= )

Mas qual foi a diferença? Eu tinha em minhas mãos acesso a ferramentas muito mais poderosas, linguagens de alto nível, SQL Server, etc.

A diferença é que o Excel está aí, sempre esteve, e estará na máquina do estagiário e do CEO da empresa, e, se você for cuidadoso, seu bom trabalho vai acabar sendo visto pelo simples fato de sua solução ter sido empacotada num .xlsx.

O futuro

É verdade que boa parte das automações vem substituindo o que o Excel faria anteriormente, e por vezes ele nem entra mais na jogada. Mas o fato é que, tem muita, muita coisa para automatizar, e provavelmente haverá mais no futuro. Quando isso acontecer, o Excel estará lá para ou proporcionar ou auxiliar no processo de criação, teste e depuração da mesma.

Incluo nisto todo o barulho sendo feito pela IA, só para ficar claro.

Concluindo

Este é apenas um relato, o qual exponho de forma a você, caro leitor, tirar suas conclusões. Em meu ver, saber Excel, independentemente da sua posição no trabalho, desde que ela envolva passar boa parte do tempo na frente da tela do Windows, só te trará vantagens, se é que não vai mudar o rumo da sua carreira, como fez com a minha, e faz até hoje.

Valeu por tudo, Excel. 40 anos. Quem venham mais 101000!

O autor, que escreveu este texto sem a ajuda de nenhum GPT da vida, apesar de saber que eles o usarão para seu treinamento sem pedir permissão.

Excel – Contar valores únicos em 2025+

Este é um truque “antigo”. Direto ao assunto, quando se quer uma lista de valores únicos no Excel, usamos o seguinte:

  • Selecionar a coluna(s) das que ser os valores sem repetição.
  • Na Aba Dados, clicar na opção remover duplicadas:

Direto, simples, e funciona com até várias colunas selecionadas. Essa abordagem, para mim, tem alguns problemas:

  • O resultado é aplicado diretamente, ou seja, isso vai alterar seus dados, o que é invasivo. A alternativa é copiar somente os dados de interesse para outra planilha e fazer a contagem, o que é aceitável para tabelas de dados pequenas.
  • É um trabalhão caso você queira, por exemplo, apenas saber a contagem de itens unicos (é possível com fórmula matriciais, mas a sintaxe é um terror).

Mas o Excel é uma mãe e não nos deixa mão. Com a adição de fórmulas dinâmicas, o feito pode ser feito da seguinte maneira.

Vou usar esta fonte de dados: https://pt.wikipedia.org/wiki/Lista_de_munic%C3%ADpios_do_Brasil_por_popula%C3%A7%C3%A3o_(2022)

Supondo que os dados estejam na coluna D, para obter a lista de estados (Unidade Federativa), faça o seguinte:

Em qualquer célula a direita dos dados, digite a seguinte fórmula:

=ÚNICO(D2:D5571)

O resultado:

Já temos a lista de valores únicos com um mínimo de cliques. Agora, ao objetivo principal deste post, para contar a quantidade de valores únicos, bastaria atualizar a fórmula para o seguinte:

=CONT.VALORES(ÚNICO(D2:D5571))

Mais simples que isso, só perguntando para o Copilot (ops…).

Forte abraço!

Python no Excel, para onde isso vai?

Python no Excel
Python no Excel

Em Agosto de 2023 tivemos a surpresa de ter a integração com Python anunciada para uma futura atualização do Excel. Uau! Isso é grande coisa e temos que prestar atenção no que isso significa, principalmente para eliminar impressões erradas que estão sendo criadas em torno disso.

Como um prelúdio, aviso que tudo que escrevo aqui é baseado inteiramente na minha opinião e nas informações públicas sobre o assunto, referências no fim do texto.

Python vs VBA

Cada célula do meu corpo, principalmente as dedicadas a programação querem que o Python seja o substituto do VBA. Permita-me ser claro neste ponto: Não é.

Não há nada, ou pouco para quem é programador de aplicações VBA nesta integração do Python com Excel que está sendo entregue, pelo menos do que foi apresentado.

Portanto, nobre programador VBA, não se anime muito. O máximo que vai acontecer é você evitar ter que criar as UDFs no VBA resolvendo tudo dentro de um bloco sucinto de Python.

Para quem é o Python no Excel

É bom que isso esteja bem claro: ninguém, (tirando a própria MS e o time de produto do Office) tem a menor ideia até o presente momento de quem é o público alvo desta implementação.

Seu tivesse que apostar, iria em duas frentes:

  1. O time do Office está mirando num público de data mining/data science, em outras palavras, os analistas de dados. Quando ferramentas como o Excel, Powers*, Tableus, entre outras, começam a dar trabalho para grandes massas de dados, estes costumam recorrer ao Python. Há muito o que desenrolar aqui, já que não é só o Python, mas sim um micro-ecossistema deste criado para atender este público
  2. Como o Python está se tornando um linguagem de programação de uso “quase” geral, pode aí haver uma intenção de proporcionar um ambiente familiar para o mercado e seus usuários. O que me faz descrer um pouco desta teoria é que eles já tentaram isso com o ScriptLab via Javascript, outra linguagem largamente utilizado. Só o tempo dirá.

Mas, para quem é o Python no Excel

Já tentei responder isso acima, assim como vários outros colegas que amam o Excel. O fato é que, não se sabe ainda no que isso vai dar.

A Microsoft é especialista em errar, mas quando acerta, é pra valer. Exemplos há aos montes, o próprio Excel é um, já que carrega essa empresa nas costas por décadas.

Por isso, é cedo para prever a aceitação que essa brincadeira terá. Até uns 5 anos, Power Query e Power BI eram coisas além do alcance dos meros escritores de fórmulas. Hoje é até difícil negar que eles vieram para ficar.

Como entusiasta, estou empolgado. Como programador, cético. Como usuário do Excel, indiferente. Como analista de dados, instigado.

O Python no Excel é para mim

Essa é fácil. Não. Mas porquê?

Eu sou um programador, gosto de código, mais do que isso, gosto de liberdade criativa. Abrir o VBA me dá uma sensação tão boa de criação que não tem como comparar o prompt do Python dentro de uma célula substituindo isso.

Adicionalmente, o Python não executa localmente. É aqui que mora o sucesso, ou talvez o fracasso dessa implementação: segurança, o câncer que acompanha a suíte Office por décadas do qual a Microsoft quer se livrar a todo custo.

Concluindo…

É cedo, não dá pra concluir muita coisa, principalmente do meu ponto de vista, que é a de um programador que gosta de VBA e pouco trabalhou com o lado Data Science do Excel.

Estou sim muito curioso para saber o que os colegar do Power PI tem a dizer sobre isso. A vocês, precisando de uma dica de Python, estamos aí.

Aguardem as cenas dos próximos capítulos. Tenho a sensação de que o Python no Excel veio para ficar.

Referências

StackOverFlow 2023 Survey: https://survey.stackoverflow.co/2023/#section-most-popular-technologies-programming-scripting-and-markup-languages
Python in Excel by Leila Gharani: https://youtu.be/FbBXtqtRnWU?si=f2X3wolD9c0fN-MP
Microsoft Excel just got Python by Fireship: https://youtu.be/8ofsE7xiGho?si=JvyPZ236Oi-O1VF4

Automatizando Tarefas: Uma Comparação entre VBA e PowerShell

Quando se trata de automatizar tarefas, os desenvolvedores têm diferentes opções à disposição. Duas linguagens populares para automação são o VBA (Visual Basic for Applications) e o PowerShell. Embora tenham propósitos semelhantes, eles possuem abordagens e pontos fortes diferentes. Neste artigo, exploraremos as semelhanças e diferenças entre o VBA e o PowerShell, juntamente com exemplos de código em cada linguagem.

VBA: Automação dentro de Aplicativos

O VBA é amplamente utilizado em aplicativos como Excel, Word e Access para automatizar tarefas e estender a funcionalidade. Ele oferece um ambiente familiar para desenvolvedores que trabalham com aplicativos do Microsoft Office. Aqui está um exemplo de uso do VBA para copiar arquivos de uma pasta de origem para uma pasta de destino com base em um critério de pesquisa:

Sub CopiarArquivos()
    Dim caminhoOrigem As String
    Dim caminhoDestino As String
    Dim nomeArquivo As String
    Dim arquivo As Variant
    
    ' Define os caminhos de origem e destino
    caminhoOrigem = "C:\PastaOrigem"
    caminhoDestino = "C:\PastaDestino"
    
    ' Percorre os arquivos na pasta de origem
    nomeArquivo = Dir(caminhoOrigem & "\*.txt") ' Critério de pesquisa para arquivos .txt
    
    Do While nomeArquivo <> ""
        ' Copia cada arquivo para a pasta de destino
        FileCopy caminhoOrigem & "\" & nomeArquivo, caminhoDestino & "\" & nomeArquivo
        
        ' Obtém o próximo arquivo
        nomeArquivo = Dir()
    Loop
    
    ' Exibe uma mensagem quando concluído
    MsgBox "Arquivos copiados com sucesso!"
End Sub

Neste trecho de código VBA, especificamos os caminhos de origem e destino e usamos a função Dir para obter uma lista de arquivos na pasta de origem que correspondam ao critério de pesquisa especificado (neste caso, “*.txt” para arquivos de texto). Em seguida, percorremos cada arquivo e usamos a declaração FileCopy para copiá-lo para a pasta de destino.

PowerShell: Automação Poderosa em Linha de Comando

O PowerShell é uma linguagem de script em linha de comando desenvolvida pela Microsoft, focada em administração de sistemas e tarefas de automação. Ele oferece uma ampla gama de cmdlets e acesso ao .NET Framework para capacidades avançadas de automação. Aqui está um exemplo de uso do PowerShell para copiar arquivos de uma pasta de origem para uma pasta de destino com base em um critério de pesquisa:

$caminhoOrigem = "C:\PastaOrigem"
$caminhoDestino = "C:\PastaDestino"

# Obter os arquivos que correspondem ao critério de pesquisa
$arquivos = Get-ChildItem -Path $caminhoOrigem -Filter "*.txt" -Recurse

# Copiar os arquivos para a pasta de destino
foreach ($arquivo in $arquivos) {
    Copy-Item -Path $arquivo.FullName -Destination $caminhoDestino
}

# Exibir uma mensagem quando concluído
Write-Host "Arquivos copiados com sucesso!"

Neste trecho de código PowerShell, especificamos os caminhos de origem e destino e usamos o cmdlet Get-ChildItem para obter uma lista de arquivos na pasta de origem que correspondam ao critério de pesquisa especificado (neste caso, “*.txt” para arquivos de texto). Em seguida, percorremos cada arquivo usando o loop foreach e usamos o cmdlet Copy-Item para copiá-lo para a pasta de destino.

Comparando VBA e PowerShell

Agora vamos comparar o VBA e o PowerShell em termos de seus pontos fortes e áreas de foco:

  1. Integração com Aplicativos: O VBA se destaca na automação de tarefas dentro de aplicativos do Microsoft Office. Ele oferece acesso direto ao modelo de objetos do aplicativo hospedeiro, permitindo um controle e manipulação detalhados. O PowerShell, por outro lado, concentra-se mais na automação e administração de sistemas, com uma ampla variedade de cmdlets para gerenciar sistemas operacionais, serviços e recursos.
  2. Sintaxe e Estrutura: O VBA utiliza uma abordagem procedural, com sub-rotinas e funções, sendo adequado para tarefas específicas de aplicativos. O PowerShell adota uma abordagem baseada em comandos, usando cmdlets e funções para executar operações. Ele abraça uma mentalidade orientada a objetos, tratando tudo como um objeto com propriedades e métodos.
  3. Integração e Extensibilidade: O VBA integra-se perfeitamente a aplicativos do Microsoft Office e seus modelos de objetos. Ele oferece acesso fácil a funcionalidades específicas do aplicativo. O PowerShell, por outro lado, oferece integração extensiva com o .NET Framework e bibliotecas de terceiros. Ele suporta a importação de módulos e o aproveitamento de bibliotecas existentes para estender a funcionalidade.
  4. Administração de Sistemas: O PowerShell se destaca em tarefas de administração de sistemas. Ele fornece cmdlets poderosos para gerenciar sistemas operacionais, Active Directory, SQL Server, Exchange Server e muito mais. As capacidades de script do PowerShell e o acesso ao .NET Framework tornam-no uma escolha ideal para automatizar operações complexas de sistema e realizar tarefas administrativas.

Quando se trata de copiar arquivos com base em critérios de pesquisa, o PowerShell tem uma vantagem clara. O cmdlet Get-ChildItem fornece recursos robustos de filtragem de arquivos, permitindo pesquisar arquivos com base em vários critérios, como extensão de arquivo, nome, tamanho e outros. A sintaxe concisa do PowerShell e seu conjunto abrangente de cmdlets o tornam uma ferramenta poderosa para gerenciar e manipular arquivos de forma eficiente.

Em conclusão, tanto o VBA quanto o PowerShell são ferramentas valiosas para automação, mas possuem áreas de foco diferentes. O VBA é ideal para automatizar tarefas dentro de aplicativos do Microsoft Office, enquanto o PowerShell se destaca em administração de sistemas, automação em linha de comando e gerenciamento de arquivos. Escolha a linguagem que melhor atenda às suas necessidades de automação e aproveite seus pontos fortes para otimizar seus fluxos de trabalho e aumentar a produtividade.