Página 1 de 1

[Resolvido] Função Vba para Contar (com Limite) os espaços vazios

Enviado: Sáb Fev 22, 2020 5:02 pm
por Mathmatic
Saudações amigos,

estou precisando muito da vossa ajuda no seguinte problema:

Preciso construir uma Função que me retornará a quantidade de espaços vazios que existe no Texto de uma célula, sendo que tenho um ponto limite, onde a função deve Contar os espaços vazios até logo após este limite.

Por exemplo, vamos supor que tenho o seguinte Texto abaixo na célula A1:

GOSTO MUITO DE UTILIZAR MACROS VBA NO EXCEL

Gostaria por exemplo de Contar a quantidade de espaços vazios que existe no texto, tendo como referência(limite) a palavra MACROS.

a Função precisa Contar os espaços vazios até logo após encontrar a palavra MACROS no texto mencionado acima.

sempre Contar até logo após a palavra de referência(limite), ou seja, neste Texto do exemplo a função deveria me retornar o valor igual a 5, pois é a quantidade de espaços vazios que existe no Texto até logo após a ocorrência da palavra MACROS .

desde já, agradeço a vossa ajuda .

Re: Função Vba para Contar (com Limite) os espaços vazios na célula

Enviado: Dom Fev 23, 2020 10:55 am
por Reinaldo
Talvez algo +/- assim:

Código: Selecionar todos

Function intContaEspaco(ByVal strTexto As String, ByVal strDelimite As String) As Integer
Dim i As Integer, x As Integer
If Not IsNull(strDelimite) Then
    strTexto = Mid(strTexto, 1, InStr(strTexto, strDelimite) + Len(strDelimite))
End If
For i = 1 To Len(strTexto)
    If Mid(strTexto, i, 1) = VBA.Chr(32) Then x = x + 1
Next
intContaEspaco = x
End Function
Obs.: As is, sem muitos testes/validações

Re: Função Vba para Contar (com Limite) os espaços vazios

Enviado: Dom Fev 23, 2020 1:24 pm
por Mathmatic
sr. Reinaldo,

era isso mesmo, funcionou muito bem sua função para Contar (com Limite) a quantidade de espaços vazios... :)
Aproveitando sua generosidade, tenho uma outra necessidade que também me ajudará muitíssimo no meu dia-a-dia:

tenho uma fórmula que Conta os caracteres até encontrar uma determinada palavra no texto da célula. Se usar como exemplo a mesma palavra MACROS, a fórmula que eu tenho me dá como resultado o valor 25, ou seja, essa fórmula que eu tenho, procura no texto da célula a palavra MACROS e então me informa que são 25 caracteres até encontrar essa palavra MACROS (contando junto a primeira letra da palavra).

essa minha outra necessidade é a seguinte:

eu gostaria de conseguir buscar no texto a palavra posterior e a palavra anterior, tendo como referência a quantidade de caracteres .

por exemplo, Se na célula A1 está o texto já mencionado no inicio deste tópico, na célula B1 tenho minha fórmula que contará os caracteres com referência numa determinada palavra (vou usar aqui o resultado 25).

Então, de acordo com o resultado 25 calculado na célula B1 pela minha fórmula, gostaria de ter na célula C1 uma função que me informará como resultado a palavra: UTILIZAR e na célula D1 uma função que me informará como resultado a palavra: VBA .

Resumindo: pela quantidade de caracteres 25, gostaria de conseguir encontrar a palavra posterior e a palavra anterior no texto.

será que existe esta possibilidade ?

muito obrigado por toda ajuda.

Re: Função Vba para Contar (com Limite) os espaços vazios

Enviado: Dom Fev 23, 2020 5:00 pm
por Reinaldo
Experimente

Código: Selecionar todos

Function strPalavra(ByVal strtexto As String, ByVal strDelimite As String, ByVal intLocal As Integer) As String
Dim MyArray() As String
Dim x As Integer
MyArray = VBA.Split(strtexto, " ")
    For x = LBound(MyArray) To UBound(MyArray)
        If MyArray(x) = strDelimite And intLocal - 1 Then
            strPalavra = MyArray(x - 1)
        ElseIf MyArray(x) = strDelimite And intLocal = 1 Then
            strPalavra = MyArray(x + 1)
        End If
    Next
End Function
Sintaxe/utilização:
Na Planilha SuaCelula=strPalavra(A1; "MACROS"; -1) (Utilizando-1 obtenha o texto anterior e 1 o posterior)
No Vba

Código: Selecionar todos

Sub Exemplo()
Dim strtexto As String

strtexto = strPalavra([a1].Value, "MACROS", -1)
MsgBox strtexto
strtexto = strPalavra([a1].Value, "MACROS", 1)
MsgBox strtexto
End Sub

Re: Função Vba para Contar (com Limite) os espaços vazios

Enviado: Dom Fev 23, 2020 7:32 pm
por Mathmatic
sr. Reinaldo,

sua função para encontrar no texto a palavra posterior e a palavra anterior também ficou boa.

Mas notei que o senhor usou como referência uma "palavra", neste caso, a palavra MACROS.

Haveria uma forma de usar como referência uma determinada quantidade de Caracteres ? por exemplo, a quantidade 25, que sugeri anteriormente ?

ou seja, ao invés da variável de referência ser uma palavra, então a variável de referência seria uma determinada quantidade de Caracteres, neste caso 25.

Muito obrigado por sua disposição em ajudar-me.

Re: Função Vba para Contar (com Limite) os espaços vazios

Enviado: Seg Fev 24, 2020 12:39 pm
por Reinaldo
Fico com a impressão que a sua demanda e outra; diferente da anunciada. Postei o que a principio e omais simples, rapido e coerente com sua necessidade informada inicialmente.
Sem uma maior noção sobre a necessidade; maiores descrições/exemplos fica difícil.

[Resolvido] Função Vba para Contar (com Limite) os espaços vazios

Enviado: Seg Fev 24, 2020 1:12 pm
por Mathmatic
sr. Reinaldo,

vou abrir um novo tópico para uma nova demanda.

a demanda deste tópico já foi Resolvida. :)

muito obrigado por sua ajuda. :)