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.
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)