Livros

  • A Busca | Maria App. TOBIAS
  • A revolução das MÍDIAS SOCIAIS | André Telles
  • As Cartas de Cristo
  • O homem mais rico da Babilônia | George S. Clason
  • O monge e o executivo | James C. Hunter
  • Os quatro elementos do sucesso | Laurie Beth Jones
  • Os segredos da mente milionária | T. Harv Eker
  • Qual é a tua Obra? | Mario S. Cortella
  • Uma vida com propósito | Rick Warren

quinta-feira, 12 de maio de 2016

criando FUNÇÃO "RetirarNumero()" no Excel (VBA)

Para extrair os números de uma célula que contenha dados mistos (letras e números) o Excel tem várias funções nativas, porém todas elas são limitadas a uma série de regras e combinações que muitas vezes só complicam vejam Fórmula para extrair número de texto - EXCEL.

Para simplificar a vida do usuário Excel, vamos criar uma função através do VBA para extrair todo valor numérico de uma célula que tenha texto com números junto.

Nesta função o(s) números(s) podem estar em qualquer posição da célula, a função irá reconhecer e trazer a informação.

Copie esta macro e cole no módulo do VBA , vá em inserir função , função definida pelo usuário e pronto.

Function RetirarNumero(Texto As String)
   Dim x As Integer
   Dim y As Integer
   Dim z As String
   For x = Len(Texto) To 1 Step -1
   If IsNumeric(Mid(Texto, x, 1)) Then
     y = y + 1
     z = Mid(Texto, x, 1) & z
   End If
   If y = 1 Then z = CInt(Mid(z, 1, 1))
     Next x
     RetirarNumero = CLng(z)
 End Function

Neste exemplo de função ela será usada com a seguinte sintaxe na célula onde se queira o resultado:

=retirarnumero(end_celula)

end_celula:  é o endereço físico da célula  exemplo:  =retirarnumero(a1)

Vamos no passo a passo para criar esta função:

1º) O arquivo Excel deverá ser salvo para execução de macro, ou seja, "Pasta de Trabalho Habilitada para Macro do Excel"



2º) A pasta de "Desenvolvedor", precisa estar disponível como na imagem abaixo:



Se esta pasta não estiver habilitada siga a instrução abaixo para habilita-la.

ARQUIVO
     OPÇÕES
          Personalizar Faixa de Opções

no lado direito tem uma relação de opções para Guias Principais, habilite DESENVOLVEDOR

3º) Após habilitado esta pasta, vamos inserir o código VBA.

CLICK no icone Visual Basic na extrema esquerda para abrir o editor


4º) Vamos editar o VBA e criar a função

Na tela de edição abra a tela de projeto VBA (EXIBIR / PROJECT EXPLORER)


Aberta a tela de projeto, insira um Módulo em Plan1



Na tela de código que será aberta insira :

Function RetirarNumero(Texto As String)
Dim x As Integer
Dim y As Integer
Dim z As String
For x = Len(Texto) To 1 Step -1
If IsNumeric(Mid(Texto, x, 1)) Then
y = y + 1
z = Mid(Texto, x, 1) & z
End If
If y = 1 Then z = CInt(Mid(z, 1, 1))
Next x
RetirarNumero = CLng(z)
End Function

Logo após inserir os comandos é só salvar...


Pode fechar esta janela e voltar a planilha de trabalho.

6º) Na célula onde deseja o resultado insira a nova FUNÇÃO...



Fonte pesquisa internet para desenvolvimento deste documento.

Leia Mais…

Fórmula para extrair número de texto - EXCEL

A lógica aqui é pesquisar e extrair o primeiro número da sequência alfanumérica e retornar então somente os números que se seguem.

A solução envolve a criação de fórmulas que executem as seguintes tarefas:
  • Quebre a sequência alfanumérica em caracteres separados.
  • Verifique se há um número na sequência decomposta.
  • Verifique a posição do número na sequência alfanumérica.
  • Conte os números na sequência alfanumérica.

Abordaremos cada uma dessas tarefas separadamente e, em seguida, integraremos as fórmulas para obter o resultado final.

QUEBRAR A SEQUÊNCIA ALFANUMÉRICA EM CARACTERES SEPARADOS

Use a função EXT.TEXTO. Essa função retorna um número específico de caracteres de uma sequência de texto, começando na posição em que você indicar, com base no número de caracteres especificado. A sintaxe da função é :

EXT.TEXTO(texto;núm_inicial;núm_caract)

EXT.TEXTO(texto;núm_inicial;núm_caract)
texto:   A sequência texto contém os caracteres que você deseja extrair.
núm_inicial:   A posição do primeiro caractere a ser extraído do texto. O primeiro caractere no texto tem núm_inicial 1 e assim por diante.
núm_caract:   Especifica o número de caracteres que a função EXT.TEXTO deve retornar do texto

Para o nosso exemplo, a fórmula é:=EXT.TEXTO(A1;LIN($1:$9);1)

Essa fórmula decompõe a sequência alfanumérica e coloca os caracteres — virtualmente — em diferentes linhas da planilha. Por exemplo, na sequência alfanumérica abc123, todos os 6 caracteres seriam separados.

OBSERVAÇÃO O número 9 pode ser substituído por qualquer número maior de acordo com o tamanho da sequência. Neste exemplo, o tamanho máximo da sequência é 9.

É importante notar que quando a sequência é decomposta, "1", "2" e "3" são tratados como texto — não como números. Para convertê-los em números, multiplique a fórmula por 1. Por exemplo:=1*EXT.TEXTO(A1;LIN($1:$9);1)

VERIFICAR SE HÁ UM NÚMERO NA SEQUÊNCIA DECOMPOSTA

Aqui empregamos a função ÉNÚM, que verifica se há um número na sequência alfanumérica. A fórmula agora se torna:=ÉNÚM(1*EXT.TEXTO(A1;LIN($1:$9);1))

Se houver um número na sequência, o resultado será VERDADEIRO; caso contrário, será FALSO.

VERIFICAR A POSIÇÃO DO NÚMERO NA SEQUÊNCIA ALFANUMÉRICA

Agora, verificaremos a posição do número localizando um valor VERDADEIRO no resultado da sequência decomposta mencionada no parágrafo acima. Empregaremos a função CORRESP. A nova fórmula agora é:=CORRESP(ÉNÚM(1*EXT.TEXTO(A1;LIN($1:$9);1));0)

IMPORTANTE Você deve digitar essa fórmula como uma matriz pressionando CTRL+SHIFT+ENTER.

Se a sequência for abc123, a fórmula resultará 4 — sendo essa a posição do primeiro caractere numérico na sequência alfanumérica.

CONTAR OS NÚMEROS NA SEQÜÊNCIA ALFANUMÉRICA

A tarefa agora é contar os números na sequência, para determinar os caracteres a serem retornados após o primeiro número na sequência alfanumérica.

Como mencionado acima, os números armazenados como texto na sequência alfanumérica podem ser convertidos para números multiplicando-os por 1. Por exemplo, =1*EXT.TEXTO(A1;LIN($1:$9);1)

Depois de convertê-los para número, é possível contar os números com a função CONT.NÚM. Os números podem ser contados utilizando-se a seguinte fórmula:=CONT.NÚM(1*ENT.TEXTO(A1;LIN($1:$9);1))

INTEGRAR AS FÓRMULAS

Agora, empregaremos a função ENT.TEXTO para integrar as várias partes da fórmula, como mostrado no seguinte exemplo.=ENT.TEXTO(A1;CORRESP(VERDADEIRO,ÉNÚM(1*ENT.TEXTO(A1;LIN($1:$9);1));0);CONT.NÚM(1*ENT.TEXTO(A1;LIN($1:$9);1)))

Em termos básicos, o problema pode ser agora resumido como: Verificar a posição do primeiro número na sequência alfanumérica (na célula A1). Retornar esse número e os seguintes.

Para converter os caracteres do resultado em número, multiplique por 1. Embora isso não seja estritamente necessário, deve ser feito se você for executar operações matemáticas sobre os resultados. Esta é a fórmula final a ser digitada na célula:

B1:  =1*ENT.TEXTO(A1;CORRESP(VERDADEIRO;ÉNÚM(1*ENT.TEXTO(A1;LIN($1:$9);1));0);CONT.NÚM(1*ENT.TEXTO(A1,LIN($1:$9);1)))


IMPORTANTE Você deve inserir essas fórmulas como matrizes pressionando CTRL+SHIFT+ENTER.


Leia Mais…

Blog de amigos

Contato - uma cópia será enviado em seu email

FALE COMIGO

Seu Nome
Seu Blog
Seu eMail
Assunto
Mensagem
Imagem de Validação
captcha
Por favor informe o texto da imagem ao lado:
[ Trocar Imagem ] [ O que é isto? ]

Powered byEMF HTML Forms