O gráfico em Cascata

O gráfico em Cascata, Bridge ou Waterfall é bastante utilizado na época do orçamento. 

Versões mais recentes do Excel têm um gráfico desses nativo, em Inserir -> Gráficos -> Cascata.

Só tem um truque adicional. Para definir quais colunas são de total, e não para somar e subtrair: selecionar apenas a coluna que queremos, clicar com botão direito e marcar a opção “Definir como total”.

  1. Para versões anteriores do Excel, segue outro template.

Essencialmente, é um gráfico em barras empilhadas, com a primeira pilha transparente.

Basta preencher as células amarelas. É possível eliminar ou expandir colunas, seguindo a mesma fórmula.

Outra dica é pintar os negativos de vermelho (manualmente).

Planilhas em asgunzi/GraficoCascataExcel (github.com)

Ideias técnicas com uma pitada de filosofia

Forgotten Lore – Ideias técnicas com uma pitada de filosofia (ideiasesquecidas.com)

A Conjectura de Collatz

A Conjectura de Collatz é o problema não resolvido de matemática mais simples da história.

Pegue um número qualquer n.

  • Se n for par, divida por 2
  • Se n for ímpar, calcule 3*n+1

E continue fazendo essa conta.

A conjectura diz que a sequência sempre vai convergir para 1.

Exemplo: número inicial 5

5 -> 16 -> 8 -> 4 -> 2 -> 1

Foram 5 passos para convergir para 1.

Exemplo: número inicial 6

6 -> 3 -> 10 -> 5 -> 16 ->  8 -> 4 -> 2 -> 1

Foram 8 passos para convergir para 1.

Para números de 2 a 50, o resultado do número de passos mostra:

Informações interessantes: apesar de extremamente simples de ser formulada, essa conjectura até hoje não foi provada.

É contra intuitivo; parece que vai crescer, mas aí converge.

A sequência é errática: um número pode precisar de 100 passos, o vizinho precisa de 5.

No VBA, a forma mais simples de resolver é com um simples loop while.

Function collatz(n)

Dim count As Long

count = 0
While n > 1

If n Mod 2 = 0 Then
    n = n / 2
Else
    n = 3 * n + 1
End If
count = count + 1

Wend

collatz = count

End Function

É possível pensar numa estrutura da dados mais complexa, porém com melhor performance computacional.

Por exemplo, salvar o número de passos de todos os valores já rodados. Rodar a sequência até chegar a um número menor do que o atual, e aí resgatar da memória o resultado já calculado.

Com esse método, é possível calcular os primeiros 110 mil números, em menos de 1 segundo.

No VBA, o limite é restrição de tamanho do tipo Long. Não há um tipo Big Int, como em Java ou Python, o que torna bem complicado calcular mais do que isso.

Código no Github: https://github.com/asgunzi/CollatzVBA

Veja também:

https://en.wikipedia.org/wiki/Collatz_conjecture

https://www.quantamagazine.org/why-mathematicians-still-cant-solve-the-collatz-conjecture-20200922/

Como criar uma foto pixelada no Excel

A ideia deste tutorial é pegar uma imagem qualquer e pintar as células do Excel de forma correspondente.

Uma imagem é apenas um retângulo dividido em quadriculados (o pixel), e cada pixel é pintado de uma cor.

Imagine que cada célula é pintada de uma combinação de Vermelho, Verde e Azul, as cores primárias.

Cada célula terá um tom de Red, Green e Blue, e essa tonalidade varia de 0 a 255.

Infelizmente, o VBA não tem uma boa biblioteca de manipulação de imagens. Recomendo instalar o OpenCV (open computer vision), no Python.

https://pypi.org/project/opencv-python/

A rotina tem dois passos:

1 – ler a imagem e salvar a matriz de dados (Python)

2 – ler a matriz de dados e colorir o Excel

Passo 1) Rodar o arquivo “OpenCVReadFile.py”, no Python.

Indicar a localização do arquivo de imagem a desenhar

Mudar o local do arquivo CSV de destino.

Essa rotina lê a imagem e salva a matriz de dados em CSV.

Passo 2)  Rodar a macro “Pixeliza” do Excel em anexo. É necessário mudar o endereço do arquivo CSV.

E pronto, temos uma reprodução da imagem na planilha, que pode ser editada normalmente, como qualquer arquivo Excel.

Atenção. Rodando essa macro, descobri que o Excel tem um limite de 4000 células com formatação diferente.

E, pior, chega facilmente nesse limite.

Portanto, o esquema citado só funciona com imagens de resolução muito baixa.

Vide arquivos no Github: https://github.com/asgunzi/FotoPixeladaExcel

Tem o Excel com a macro e o código Python.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

Escrever por extenso

A macro da planilha (https://github.com/asgunzi/EscreverExtensoVBA) lê um número e escreve por extenso.

O código não é meu. Originalmente é VB6. Peguei num fórum e colei no Excel, e parece que funciona legal.

Não sei se isso pode ser útil de alguma forma.

Ideias técnicas com uma pitada de filosofia
https://ideiasesquecidas.com/

Entre no grupo de estudos de Computação Quântica:
https://www.facebook.com/groups/1013309389112487

Lista de presença de reunião no Teams

Nesses tempos de trabalho remoto, segue a seguir uma dica do amigo Saulo Siqueira.

Como baixar a lista de presença de uma reunião no Teams para o Excel?

Com isso, é possível verificar quem participou ou não da reunião, e até a hora em que ele entrou e saiu!

Importante: só pode ser feito durante a reunião.

Como temos uma rotina pesada de reuniões e controle de participantes, isso pode ser útil.

Obs.: a TI deve habilitar essa possibilidade no Teams.

Considerações:

  • Somente os organizadores da reunião podem baixar relatórios de presença. Esta opção não está disponível para outros participantes.
  • Se os participantes ingressarem em uma reunião antes do organizador, seus horários de junção corresponderão ao tempo em que o organizador ingressou na reunião. 

Durante a reunião, selecione Mostrar participantes 

 e escolha baixar lista de participantes 

O relatório será baixado como um. Arquivo CSV que pode ser aberto no Excel. O. O arquivo CSV contém o nome, o tempo de ingresso e o tempo de todos os participantes da reunião.

Obs.: caso não apareça a opção acima, faça uma atualização da ferramenta.

Veja também:

https://ferramentasexcelvba.wordpress.com/2020/07/24/desenhar-no-excel-e-power-point

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

Pequena rotina de criptografia

A criptografia existe desde a Roma antiga, pelo menos.

A forma mais básica de codificar / decodificar uma mensagem é com uma cifra de substituição simples.

Por exemplo, transformo a em w, b -> x, c -> y,

Segundo a tabela abaixo.

Exemplo:

“contar” -> “ykjpwn”

E para decodificar, fazer o oposto:

“ykjpwn” -> “contar”

Desafio: criar uma rotina que codifique/decodifique uma frase qualquer.

A minha resposta está no arquivo aqui.

Basta ativar macros e rodar. A macro faz exatamente o que a gente faria manualmente: para cada sílaba, procura na tabela qual o símbolo correspondente, e substitui.

Uma curiosidade. Tem um conto de Sherlock Holmes, chamado “o caso dos dançarinos”.

O detetive recebeu uma mensagem cifrada, com figuras de dançarinos. É a mesma lógica do desafio proposto, cifra de substituição simples.

Para quebrar o código, Holmes fez uma contagem dos símbolos. O dançarino que mais aparecia seria provavelmente o “E”, letra mais frequente em inglês. A seguir, o segundo símbolo mais frequente seria o “E”.

E assim sucessivamente, ele foi deduzindo as letras até decodificar a mensagem.

xkw pwnza lwnw pkzko!

Multiplicador de shapes – Power Point

Segue uma rotina que pode ser útil, para criar apresentações (Multiplicador.pptm)

É um “multiplicador de shapes”.

O objetivo é pegar um shape assim:

E criar cópias dele:

O primeiro passo é selecionar com o mouse o shape que queremos multiplicar.

Com o shape selecionado, rodamos a macro.  Atalho (alt + F11) para abrir o editor de macros, e F5 para rodar a macro “multiplier”

Vai surgir uma caixa, perguntando quantas linhas e colunas queremos (separar os números com um espaço)

Resultado:

Se eu tiver várias formas compostas, é necessário agrupar todos num único shape.

Resultado:

As macros devem estar habilitadas.


Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

Gif animado a partir do Power Point

Há uma forma simples de criar pequenos vídeos ou gif animados a partir do Power Point.

Basta criar os slides que vão virar o filminho.

Depois, Arquivo -> Exportar -> Criar vídeo (ou criar gif).

Há algumas configurações a preencher, como o tamanho e o tempo entre frames.

O resultado é algo como o gif a seguir, só para ilustrar o conceito.

Não se compara a um editor de vídeo, mas a vantagem é ser muito fácil de fazer.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

PROCV X PROCX

Bastante gente ficou em dúvida sobre o último post, sobre PROCX.

Vou fazer uma comparação com o clássico PROCV. Segue arquivo aqui.

PROCV:

Digamos que eu tenha a base a seguir.

Quero procurar “LAMINA” e retornar o preço unitário.

Com procv, os parâmetros são:

– o que quero procurar (célula G3)

– a tabela onde quero procurar, onde a coluna a procurar é a primeira (B3:D8)

– quando eu encontrar, qual o número da colunas à direita (terceira coluna).

Com procX:

– o que quero procurar (célula G3)

– a coluna onde quero procurar (B3:B8)

– a coluna do valor encontrado   (D3:D8)

Alguns dos superpoderes abaixo.

Busca à esquerda:

Procv: não retorna coluna à esquerda

Procx: é só mudar a coluna do valor (A3:A8)

=PROCX(G3;B3:B8;A3:A8)

Procura de baixo para cima:

                Procv: O procv sempre busca o primeiro valor de cima para baixo. Não é possível fazer o contrário.

                Procx:  basta colocar -1 no último parâmetro opcional. =PROCX(G3;B3:B8;D3:D8;;;-1)

E se não encontrar?

                Procv: Dá erro

                Procx: é possível estabelecer um valor caso não encontre.  =PROCX(G6;B3:B8;D3:D8;”Não Encontrado”)

Arquivo para download.

Lembrando que o procx só funciona em versões a partir do Office 365.

Veja também:

Ideias técnicas com uma pitada de filosofia https://ideiasesquecidas.com/

Computação e informação quântica: https://informacaoquantica.wordpress.com/