Como colocar uma linha diagonal numa célula?

É possível colocar uma linha diagonal numa célula do Excel.

Primeiro, selecionar a célula.

Digitar CTRL+1 para entrar em opções da célula, e ir para a aba “Borda”.

Há várias opções, entre elas, a linha diagonal.

Resultado:

Há várias outras opções possíveis, por exemplo.

Vide arquivo para download.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

Esquerda, direita e o infinito

O Excel tem funções para manipulação de strings que podem ser bastante úteis para a manipulação de dados.

As mais fáceis são os comandos “esquerda” e “direita”.

Por exemplo, temos uma lista de placas no formato “ABC1324”. Queremos separar as letras dos números.

Vamos utilizar a função “esquerda” para retirar as strings à esquerda, e a função “direita” para retirar as strings à direita, conforme o próprio nome indica.

A função esquerda precisa de dois parâmetros: a string original, e o número de caracteres a extrair. No caso, queremos 3 strings na função esquerda, e 4 na função direita, chegando

Dica aleatória: em fórmulas -> Mostrar fórmulas, é possível visualizar as fórmulas na planilha, ao invés dos valores.

Mas, e se eu quiser extrair uma informação no meio do texto, e não à esquerda ou direita?

A função “ext.texto” pode fazer isso. Ela tem três parâmetros: a string original, a posição de início que quero extrair e o número de caracteres.

Digamos que eu queira extrair a última letra da placa e os dois primeiros números. Em “ABC1324”, o “A” equivale a posição 1, “B” posição 2, etc.

StringABC1324
Posição1234567

Portanto, =EXT.TEXTO(“ABC1324”;3;3) equivale a “C13”.

Vide planilha anexa.

O comando Ext.texto pode ser utilizado para resolver o código anterior.

Relembrando, era para decifrar o código :

011110000001001011100011001001011100100110100011110000001110000010000010000000010110001101000010000000100001010000010011101010000100000011010000101111

Segundo a tabela:

Uma forma de fazer isso é notar que a string codificada tem sempre 5 dígitos, e, portanto, a posição de início da string será 1, 6, 11, etc…

A seguir, utilizar a função Ext.texto, referindo-se à string codificada, a posição de início da tabela acima, e com tamanho de 5 caracteres.

Dessa forma, é possível “picotar” o código em pedaços de tamanho 5, e daí, fazer um procv simples para verificar qual é a string equivalente.

A resposta final é “o infinito na palma de sua mão”, em referência a alguns versos de William Blake:

“Ver um Mundo num Grão de Areia

E um Céu numa Flor Silvestre,

Ter o Infinito na palma da sua mão

E a Eternidade numa hora.”

Exercício – codificação e decodificação

A codificação é importante para transformar qualquer coisa mensurável (texto, imagens, sons) em números computáveis.

Digamos que a tabela com a codificação utilizada seja a da figura abaixo.

Se temos 26 letras no alfabeto, 5 bits binários são suficientes para descrever todas as letras (2⁵ = 32, que é maior do que 26). Acrescentemos o espaço em branco como o primeiro da lista.

Pelo código acima:

“lua”011001010100001

Pois

“l” = 01100 

“u” = 10101

“a” =00001

Importante: ignorar acentos, letras maiúsculas e pontuação, a bem da simplicidade.

Pela mesma lógica,

“ceu”000110010110101
“dom casmurro”001000111101101000000001100001100110110110101100101001001111

O exercício é decifrar a mensagem codificada abaixo.

Decifre:011110000001001011100011001001011100100110100011110000001110000010000010000000010110001101000010000000100001010000010011101010000100000011010000101111

É possível fazer no braço, ou apenas com Excel, embora seja trabalhoso.

Desenho de padrões com círculos

Quando eu era adolescente, vi uma espécie de régua, que permitia fazer padrões bonitos a partir de elipses.

Era um negócio desse tipo:

Ver a imagem de origem

Dá para fazer algo mais ou menos parecido, com apenas um comando VBA: o de plotar círculos. O formato é o seguinte:

ActiveSheet.Shapes.AddShape(msoShapeOval, x, y, comprim, largura)

Para plotar um círculo, devemos saber a posição dele (x,y), o comprimento e largura. Se é um círculo e não uma elipse, comprimento = largura = raio.

O resto dos comandos serve apenas para apagar desenhos antigos, colorir e posicionar os novos círculos.

Algumas convenções:

  • Número de círculos é o número de círculos a plotar.
  • O raio menor é o raio desses círculos.
  • O raio maior é o raio em torno da qual os círculos são plotados
  • E o ângulo, em graus, é o ângulo entre um círculo e outro.

A ilustração a seguir dá uma ideia desses parâmetros.

Obs. Como o ângulo é divisor de 360 graus, tem hora que os círculos ficam um sobre o outro.

Com apenas esses conceitos, é possível gerar algumas variações interessantes.

Planilha para download no Github. Para rodar, é necessário ativar macros.

Outras sugestões são bem-vindas.

Versão web em SVG:

https://asgunzi.github.io/CirculosSVG/

https://ideiasesquecidas.com/

Imagens em gráficos

Os gráficos do Excel podem ser preenchidos com cores, padrões, e também com imagens.

Esta última opção por ser bastante útil.

Primeiro, inserir um gráfico comum.

Clicando com o botão direito no gráfico, Formatar Série de dados -> Preenchimento.

Há várias opções de preenchimento. Escolher Preenchimento com imagem.

Deve-se escolher a imagem a ser colocada.

Resultado abaixo.

Há alguns gráficos, como o de área ou de barra, que são bons para este tipo de técnica.

Outro exemplo:

Vide arquivo no OneDrive

Grafico com imagens.xlsx

Veja também:

https://ideiasesquecidas.com/

Triângulo de Pascal em Excel

O triângulo de Pascal, em homenagem ao matemático Blaise Pascal, tem uma regra de formação bastante simples. Download aqui.

Cada linha começa e termina com 1. Os demais valores são a soma dos dois números acima da célula.

Ex. O valor 4 abaixo é a soma de 1 e 3, da linha acima.

Pascal - research

É bem simples criar um triângulo desses em Excel. É basicamente, colocar células de somar na posição correta.

A implementação em anexo utiliza macros, mas é a mesma ideia. Para colorir, é só usar formatação condicional.

Fica como exercício para casa: criar uma implementação do triângulo de Pascal.

Curiosidade: o mesmo triângulo é conhecido desde a antiguidade, sendo redescoberto em várias culturas.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

Intervalos e desloc – solução

Em relação ao post anterior, https://ferramentasexcelvba.wordpress.com/2020/04/08/exercicio-de-intervalos-e-funcao-desloc/

Planilha para download.

A função “corresp” é uma função de busca, similar ao procv. Porém, ela retorna a posição do valor, o índice.

Corresp(valor, range de busca, busca exata ou maior)

Abaixo, corresp da data (06/01/2020) vai retornar 9

Primeira ocorrência (posição)

=CORRESP($H$4;$B$3:$B$206;0) – a busca exata vai dar a primeira ocorrência.

Abaixo, corresp da data (06/01/2020) vai retornar 12

Última ocorrência (posição)

=CORRESP($H$4;$B$3:$B$206;1) – coloquei o parâmetro “1”, então vai buscar o último valor do dia 06/01/2020

Número de transações: pode ser um cont.se, e também pode ser a diferença entre a última ocorrência e a primeira

Primeira ocorrência:  utilizar a função desloc. É como um mapa do tesouro. A partir de um ponto inicial, ande y casas para baixo e x casas para a direita.

=DESLOC($B$2;H11;2)

A referência é a célula B2. Ando para baixo o número de casas da primeira ocorrência. Ando para a direita 2 casas, porque quero buscar o valor.

Primeira ocorrência:  a mesma coisa, usar desloc. Só que ao invés de andar a primeira ocorrência, uso a posição da última ocorrência

=DESLOC($B$2;H12;2)

Para média, mín e máx, o truque é semelhante.

Uso a função =MÉDIA(intervalo)

A questão é definir o intervalo.

Aí, a função desloc ajuda novamente. Ela pode retornar um número, como acima, mas também pode retornar um intervalo.

São 5 parâmetros para o desloc: 1 – ponto de partida, 2 – casas para baixo a deslocar, 3 – casas para direita, 4 – range de linhas do intervalo, 5 – range de colunas do intervalo

O range de linhas é o cont.se da célula H4. O range de colunas é 1.

A fórmula final:

Média =MÉDIA(DESLOC($B$2;$H$11;2;$H$14;1))

Mínimo do dia =MENOR(DESLOC($B$2;$H$11;2;$H$14;1);1)

Máximo do dia =MAIOR(DESLOC($B$2;$H$11;2;$H$14;1);1)

É possível utilizar a função “INDIRETO” para alguns desses cálculos. É a mesma ideia.

Corresp e Desloc são formas indiretas, um pouco mais abstratas, de referenciar dados. É como um ponteiro em C. São um pouco mais avançadas, porém, bastante poderosas.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/