Cadastre-se

Para realizar o cadastro, você pode preencher o formulário ou optar por uma das opções de acesso rápido disponíveis.

Entrar

Por favor, insira suas informações de acesso para entrar ou escolha uma das opções de acesso rápido disponíveis.

Forgot Password,

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Captcha Clique na imagem para atualizar o captcha.

Você deve fazer login para fazer uma pergunta.

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

PergunteAqui Latest Perguntas

  • 0
Anônimo(a)

[VBA] Como copiar apenas os números em uma célula?

Olá,
Eu usei um “.find()” para encontrar algumas propriedades em planilhas Excel. Em seguida, o programa copia o conteúdo da célula da frente, que indica o valor de tal propriedade. Vou fazendo isso para cada planilha a fim de montar uma tabela e, posteriormente um gráfico.
No entanto, este “valor” nem sempre está digitado como um número. Pode aparecer em um dos seguintes modos:

a. 15
b. [15] – que significa em média 15, isto é, colocarei 15 no gráfico.
c. 10 – 20 – entre 10 e 20, daí colocarei os dois no gráfico.
d. 10 [20] – – entre 10 e 20, daí colocarei os dois no gráfico.
e. 15 (a 100ºC) – repare que, por esta informação adicional, não posso ir lá na célula e mudar o que está escrito para simplesmente “15”.
f. 15 kg/m² -aqui, aparece a unidade junto ao número.

Se eu uso um replace(minhaString, “[“,””), até removo os colchetes. No entanto, no caso “d”, remover o colchete, a princípio, gerará confusão. Daí, eu preciso saber, primeiramente, em qual tipo o número se enquadra. Como vou saber quando há colchetes, parênteses ou unidades?
Do mesmo modo, não posso chamar split(minhaString, “-“), pois, se não existir hífen, ao invés de ignorar, o programa dá erro.
Assim, como resolver este problema?

Existem palavras chaves, do tipo “*” que resolvem o problema?

If minhaString for do tipo “[*]”, onde * é um número com quantidade de dígitos desconhecida, Then…
Elseif minhaString for do tipo “*[*]” Then…
etc

Muitíssimo obrigado.

Você precisa entrar para adicionar uma resposta.

1 Resposta

  1. entre na guia desenvolvedor


    ‘Esta função tem por objetivo retirar números de células que contenham conteúdos mistos de números e texto
    ‘sem a possibilidade de serem colunados
    Public Function lfRetiraNumeros(ByVal vValor As String) As String
    ‘Atualiza o cálculo automaticamente
    Application.Volatile

    ‘Conta a quantidade de caracteres
    Dim vQtdeCaract As Long
    Dim vControle As Boolean

    vQtdeCaract = Len(vValor)
    vControle = False

    ‘Para cada caractere identifica se é número ou texto
    For i = 1 To vQtdeCaract
    ‘Se for número adiciona no retorno da função
    If IsNumeric(Mid(vValor, i, 1)) Then
    If vControle = True And lfRetiraNumeros <> vbNullString Then
    lfRetiraNumeros = lfRetiraNumeros + ” ”
    End If
    vControle = False
    lfRetiraNumeros = lfRetiraNumeros & Mid(vValor, i, 1)
    Else
    vControle = True
    End If
    Next

    ‘Substitui espaços em branco por / e tira espaços em branco no final do retorno da função
    lfRetiraNumeros = Replace(Trim(lfRetiraNumeros), ” “, “/”)

    End Function

    E na planilha digite =lfRetiraNumeros(célula em questão)

Perguntas Relacionadas