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

Exercício – Código de Barras

O código de barras é utilizado universalmente para representar informações sobre um produto. A grande vantagem é a facilidade de ler o código utilizando laser e reconhecimento de imagens.

Uma convenção bastante utilizada (porém não é a única) é a EAN-13.

Ela tem treze dígitos.

  • Os três primeiros representam o país (Brasil tem número 789),
  • Os quatro dígitos seguintes representam o fabricante,
  • Os cinco dígitos seguintes representam o produto.
  • O último dígito é o verificador: é uma checagem para conferir se não houve algum erro durante a leitura.

O desafio consiste em criar uma planilha que calcule o dígito verificador, dado um código de barras.

Procedimento.

Digamos que o número seja 590.123.412.345-7

Tiro o dígito verificador da conta.

Considero cada dígito individualmente.

Multiplico o primeiro por 1, o segundo por 3 e repito até o 12º dígito.

Faço o somar produto desses dígitos e o multiplicador, ou seja, 5×1 + 9×3 + 0x1 + 1×3 + 2×1 + 3×3 + 4×1 + 1×3 + 2×1 + 3×3 + 4×1 + 5×3

Resultado:          83.

Divido por 10:                   8,3

Arredondar para baixo:                 8

Somar 1:              8 + 1 = 9

Multiplicar por 10:          90

Subtrair a conta original:              90 – 83 = 7

O dígito verificador é o 7, o que confere com o código: 590.123.412.345-7

Outro exemplo: 789.602.630.347-7 (note que o produto é brasileiro, começa com 789)

O desafio consiste em criar um procedimento (fórmula, código, vale tudo) para verificar se o dígito verificador está correto, dado um código de barras.

A minha resposta no próximo post.

Calculadora de IMC

Segue um projetinho simples.

Como fazer uma calculadora de IMC (Índice de massa corporal), utilizando formulários em Excel.

Com Alt + F11, abrimos o editor do VBA.

Inserir -> Userform

Vai abrir um formulário. Este formulário tem várias propriedades. Mudar a propriedade Caption (título) para IMC.

Na caixinha de controles, um deles é o label (um texto simples) e outro é uma caixa de texto (para input de dados).

Basta clicar no controle e inserir no formulário.

Inserir os elementos e posicionar no formulário.

No botão rodar, vai o código  que faz o cálculo.

Se a caixinha de texto se chama TxtPeso, para acessar o valor é TxtPeso.Value.

O IMC é o peso pela altura ao quadrado.

imc = peso / (altura ^ 2)

Pela tabela abaixo, temos a recomendação do IMC.

Resultado de imagem para imc tabela

E o resultado final é algo assim:

Link para download: https://drive.google.com/file/d/1DwMTDTahuvRk7JLeInMgdviUexA6bVuq/view?usp=sharing

Private Sub CommandButton1_Click()

Dim imc As Double

Dim peso As Double

Dim altura As Double

Dim texto As String

Dim txtAlt As String

If Information.IsNumeric(TxtPeso.Value) Then

    peso = TxtPeso.Value

Else

    MsgBox “Informar valor numérico para o peso”

    Exit Sub

End If

If Information.IsNumeric(TxtAltura.Value) Then

     altura = TxtAltura.Value

Else

    MsgBox “Informar valor numérico para a altura”

    Exit Sub

End If

imc = Math.Round(peso / (altura ^ 2), 1)

If imc < 17 Then

    texto = “IMC = ” & imc & “, Peso muito abaixo do ideal”

ElseIf imc < 18.5 Then

    texto = “IMC = ” & imc & “: Peso  abaixo do ideal”

ElseIf imc < 25 Then

    texto = “IMC = ” & imc & “: Peso normal”

ElseIf imc < 30 Then

    texto = “IMC = ” & imc & “: Acima do peso”

ElseIf imc < 35 Then

    texto = “IMC = ” & imc & “: Obesidade I”

ElseIf imc < 40 Then

    texto = “IMC = ” & imc & “; Obesidade II (severa)”

Else

    texto = “IMC = ” & imc & “: Obesidade III (mórbida)”

End If

Label3.Caption = texto

End Sub

Ideias técnicas com uma pitada de filosofia

http://ideiasesquecidas.com

Clusterização

O K-means é um algoritmo de clusterização.

Clusterizar significa dividir uma amostra em grupos.

Ele é mais ou menos assim:

– diga quantos grupos você quer formar (N)

– escolha N indivíduos aleatórios do grupo (cada um será tipo o cabeça do grupo)

– para cada indivíduo restante, veja quem é o líder mais próximo

– avalie a qualidade da dispersão

– repita várias vezes, ficando com o melhor

Utilizei este algoritmo num projeto antigo, que se propunha a dividir igualmente uma região por um número N de técnicos.

Fica o arquivo de exemplo, aqui.

Cicloide em Excel – VBA

Um exerciciozinho de Excel – VBA – pode ser útil para fazer animações em geral.

Imagine um círculo rolando. Qual a curva descrita por um ponto fixo neste círculo? O nome desta curva é cicloide.

O VBA (aqui) plota uma animação, com o círculo girando e a curva gerada.

Tem dois parâmetros:

  • Raio do ponto (100% = ponto na superfície do círculo, menos que isso = ponto dentro do círculo).
  • Velocidade da animação (porque cada computador é diferente e a animação pode ficar ruim)

Quando o raio é zero, quer dizer que o ponto está no centro do círculo, e a cicloide é uma linha reta.

É necessário ativar macros para rodar.


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

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Como escolher cores arbitrárias no Excel

O Excel oferece muitas cores em sua paleta, porém é possível escolher arbitrariamente uma cor.

Em página inicial -> cores do tema, escolher Mais cores…

Vai aparecer o menu de cores. Ir na aba Personalizar.

Vai aparecer para preencher o código RGB da cor. Este número é uma combinação de Vermelho (Red), Verde (Green) e Azul (Blue), numa escala de 0 a 255 para cada cor (não por coincidência, 256 = 2^8).

Digamos que eu goste da cor amarelo ouro. Esta tem código RGB = (249, 166, 2).

E como saber o código RGB das cores? A internet tem várias fontes, mas para ajudar, o arquivo excel aqui é um simuladorzinho de cores RGB.

É necessário ativar macros para rodar.


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

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Colar vínculo e cortar para demarcar forma

Esta técnica pode ser útil para criar dashboards no Excel. É possível copiar um range de células e colar como vínculo – se mudar algo na fonte, a imagem irá atualizar de modo equivalente.

Digamos que quero vincular o range abaixo.

Iniciamos copiando (CTRL+C) a região.

Em Colar -> Colar vínculo da imagem, teremos uma cópia em imagem da região afetada. Só uma imagem retangular é comum demais. Podemos fazer algo mais sofisticado.

Em Formatar -> Cortar -> Cortar para demarcar forma, é possível mudar a forma da imagem. Desse modo, podemos ter uma imagem vinculada à fonte com um formato de shape que ajude a ilustrar as nossas ideias. Vide anexo.


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

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Quantas bobinas cabem num contêiner?


No comércio exterior, o termo “estufar” o contêiner significa colocar a carga dentro do contêiner.

Bobinas de pé, num contêiner, podem ser modeladas puramente por geometria.

O algoritmo (download aqui) pede as dimensões do contêiner, as características das bobinas, e sugere o arranjo ideal, restrito ao espaço disponível e à carga máxima permitida.

Outro exemplo:

Há softwares comerciais que fazem isto (ex. Max Load), fazendo também a composição de diferentes tipos de bobinas, e também é possível colocar bobinas deitadas, etc. Entretanto, são softwares bem mais complicados para usar. Para a aplicação simples como o caso acima, o algoritmo do anexo funciona.

Cuidado: só vale para bobinas em pé.


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

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/


Comparação de palavras

Ferramenta Excel-VBA para comparar palavras (strings).

Link para dowload:

https://drive.google.com/open?id=0B7qV4XXADYw2UWNLLW9weUZPUzA


ComparaStrings.JPG

Dada uma lista de palavras, o algoritmo calcula o quão diferentes são as combinação de palavras da lista.

Por exemplo, Marrocos e Martocos são diferentes num fator 0,12 (quanto mais próximo de zero, mais semelhantes.

Já Martocos e Notebook, não tem nada haver, um fator de 0,62.

Este algoritmo pode ser útil para verificar repetições em cadastro de materiais, por exemplo.

Arnaldo Gunzi.


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

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Encontra distância entre dois pontos

Update: Atenção! Este projeto é muito antigo, de 2014. A API do Google e as regras de utilização mudaram (várias vezes) desde então, e o método descrito não é mais válido. Só mantenho aqui para registro histórico.

Vide trabalhos mais recentes, como em https://github.com/slawek87/geolocation-python/tree/master/geolocation

Você insere uma série de origens e destinos. Pode ser endereço, CEP, cidade, qualquer coisa entendível pelo GMaps. A macro consulta o Google maps para cada linha, e traz a distância e o tempo.

EncontraDist.PNG

Demora um pouco, mas é melhor do que fazer no braço.

Os endereços devem ser entendíveis no GMaps. Se não encontrar, vai voltar um zero.

E o GMaps pode errar também. Se procurar a rua Pernambuco em São Paulo, ele pode retornar a rua São Paulo, em Pernambuco. Portanto, tem que tomar cuidado e não confiar cegamente na informação.

Há um limite de consultas de 2500 consultas diárias por dia no Google Maps, com esta API grátis.

(Atualização em set 2018: O Google mudou a política da API. Agora é necessário abrir uma conta no Google maps.

É só acrescentar o argumento: key=YOUR_KEY no final do link que acessa a API.
Mas é necessário gerar a chave no site do Google e ter uma conta de faturamento.
Contribuição da leitora Lanna Sanches.)

Link para download

Projeto no Github: https://github.com/asgunzi/EncontraDistanciasVBA


Autores:

Arnaldo Gunzi

Maurício Cota

Contribuição: Felipe Allevato


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

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/