Shark Tip - VBA Tips - Contando o número de vezes que um expressão aparece - Count String Occurrence

Inline image 1

A função apresentada é uma excelente maneira de contar as ocorrências de uma substring dentro de uma string no Excel, utilizando o VBA (Visual Basic for Applications). A automação de tarefas como essa pode economizar uma quantidade significativa de tempo, especialmente em processos que exigem análise de grandes volumes de dados ou textos. Em vez de realizar buscas manuais ou usar funções limitadas do Excel, a função `CountStringOccurrence` permite que o usuário conte ocorrências de maneira rápida e eficiente, além de ser flexível o suficiente para permitir buscas sensíveis ou insensíveis ao caso.


Essa função é particularmente útil em diversas áreas que lidam com manipulação de texto, como análise de dados, auditorias de conteúdo e até mesmo em processos de tratamento de dados em grandes conjuntos de informações. Com a capacidade de contar ocorrências em um texto, o código pode ser utilizado para identificar padrões, realizar verificações de dados ou até mesmo monitorar o uso de palavras-chave em documentos ou relatórios. Com a automação, o trabalho que antes seria tedioso e suscetível a erros se torna muito mais ágil e preciso.


Outro benefício significativo do uso desta função é a personalização que ela oferece. O parâmetro opcional `blnCase` permite que o usuário escolha entre uma busca sensível ou insensível ao caso. Isso proporciona uma flexibilidade adicional para adaptar a função às necessidades específicas do usuário. Quando se lida com dados que podem ter variações de maiúsculas e minúsculas (como nomes próprios ou títulos), a opção de desabilitar a sensibilidade ao caso é extremamente útil.


A eficiência do código também não deve ser subestimada. Em vez de realizar múltiplas buscas manuais ou usar funções mais lentas do Excel, a automação por meio de VBA garante que a contagem de ocorrências seja realizada de maneira rápida e sem a necessidade de intervenção manual. Isso pode ser uma enorme vantagem em ambientes de trabalho que lidam com grandes volumes de texto, como em departamentos de marketing, jurídico, ou finanças.


O código é altamente adaptável e pode ser facilmente modificado para atender a diferentes necessidades. Por exemplo, é possível estender a funcionalidade para contar não apenas palavras ou frases, mas também caracteres específicos dentro de uma string. Isso faz com que o código seja útil em uma ampla variedade de cenários, incluindo a análise de erros em relatórios, contagem de elementos em textos técnicos, ou até mesmo na análise de conteúdo em mídias sociais.


Além disso, a robustez do código é outra vantagem notável. Ele inclui verificações importantes, como a validação da substring vazia e o controle de sensibilidade ao caso, o que torna o código mais seguro e livre de falhas em situações inesperadas. Isso também contribui para uma melhor experiência do usuário, pois evita que o código gere erros ou resultados incorretos devido a entradas inadequadas.


A automação no Excel pode ser uma ferramenta poderosa quando combinada com VBA. A função apresentada aqui é um exemplo claro de como tarefas simples, como contar a ocorrência de uma substring, podem ser otimizadas para uma execução rápida e eficiente, liberando os usuários para se concentrarem em tarefas mais complexas. Essa abordagem não apenas economiza tempo, mas também permite que os usuários realizem análises de dados mais profundas e detalhadas.


Por fim, a função `CountStringOccurrence` é um excelente exemplo de como o VBA pode ser usado para aumentar a produtividade em tarefas cotidianas. Com a flexibilidade, robustez e eficiência do código, ele pode ser facilmente incorporado em diversas rotinas de trabalho, seja para análise de textos, relatórios ou até mesmo na verificação de dados em planilhas. A automação não apenas melhora a eficiência, mas também garante consistência e precisão em todos os processos de análise de texto.


De vez em quando somos surpreendido com a necessidade de verificarmos quantas vezes certo caracter aparece numa palavra, frase, ou texto...Divirta-se!

Public Function CountStringOccurrence( _
    ByVal strString As String, _
    ByVal strCharString As String, _
    Optional ByVal blnCase As Boolean = True _
) As Long

    ' Declaração das variáveis
    Dim lngPosition As Long
    Dim lngLen As Long
    Dim lngCount As Long

    ' Inicializa o contador
    lngCount = 0
    lngLen = Len(strCharString)

    ' Verifica se a comparação será sensível ao caso
    If blnCase = False Then
        ' Se a busca for insensível ao caso, converte ambas as strings para maiúsculas
        strString = UCase(strString)
        strCharString = UCase(strCharString)
    End If

    ' Verifica se a substring não está vazia
    If lngLen = 0 Then
        CountStringOccurrence = 0
        Exit Function
    End If

    ' Loop para contar as ocorrências da substring na string principal
    For lngPosition = 1 To Len(strString) - lngLen + 1
        ' Compara a substring com a parte da string principal em cada posição
        If StrComp(Mid(strString, lngPosition, lngLen), strCharString, vbBinaryCompare) = 0 Then
            lngCount = lngCount + 1
        End If
    Next lngPosition

    ' Retorna o número de ocorrências
    CountStringOccurrence = lngCount

End Function


Explicação do Código

1. Declaração das Variáveis: O código declara três variáveis (`lngPosition`, `lngLen`, e `lngCount`). A variável `lngPosition` será usada para percorrer a string principal, `lngLen` armazena o comprimento da substring a ser contada, e `lngCount` mantém o número de vezes que a substring é encontrada.

2. Inicialização do Contador: A variável `lngCount` é inicializada como 0, pois inicialmente não há ocorrências da substring. A variável `lngLen` é preenchida com o comprimento da substring `strCharString`, pois essa informação é necessária para o cálculo.

3. Sensibilidade ao Caso (Case-Insensitive): Se o parâmetro `blnCase` for `False`, a função converte ambas as strings (tanto a principal quanto a substring) para maiúsculas usando a função `UCase`. Isso torna a comparação insensível ao caso, ou seja, as letras maiúsculas e minúsculas serão tratadas como iguais.

4. Validação de Substring Vazia: Antes de iniciar a contagem, o código verifica se a substring `strCharString` tem comprimento maior que 0. Se a substring estiver vazia, o código retorna 0, pois não há como contar uma substring vazia em qualquer string.

5. Loop de Comparação: O loop `For` percorre a string principal `strString` de acordo com o comprimento da substring, comparando cada parte da string principal com a substring usando a função `Mid`. A função `StrComp` é utilizada para comparar as duas partes, e o parâmetro `vbBinaryCompare` garante uma comparação binária.

6. Contagem de Ocorrências: Sempre que uma correspondência é encontrada, o contador `lngCount` é incrementado. O resultado final é o número total de vezes que a substring aparece na string principal.

7. Resultado Final: Após o loop, a função retorna o valor de `lngCount`, que é o número de ocorrências da substring na string principal.

8. Melhorias no Código: A principal melhoria foi otimizar a estrutura de controle de fluxo e evitar o uso de variáveis desnecessárias. Além disso, a função agora verifica se a substring está vazia antes de realizar qualquer processamento. Isso evita erros e melhora a eficiência do código.

9. Eficiência e Robustez: O código agora é mais eficiente, pois a conversão de caso é feita apenas uma vez, e a busca por ocorrências é realizada de forma mais eficiente, sem processamento desnecessário.

 

Exemplos de Uso do Código:


1. Contagem de Palavras-chave em Relatórios de Pesquisa:

   - Objetivo: Contar quantas vezes uma palavra-chave específica aparece em um relatório de pesquisa.


   - Exemplo de uso: A função é usada para contar as ocorrências de uma palavra-chave em um conjunto de relatórios, facilitando a análise de tendências ou a revisão de conteúdo.


2. Análise de Conteúdo em Relatórios Jurídicos:

   - Objetivo: Contar a frequência de termos específicos em documentos jurídicos, como "contrato", "acordo" ou "confidencial".


   - Exemplo de uso: Os advogados podem usar o código para encontrar rapidamente a ocorrência de termos importantes em documentos legais e garantir que os documentos estejam completos ou em conformidade com certos requisitos.


3. Contagem de Erros em Planilhas de Auditoria:

   - Objetivo: Contar quantas vezes um termo específico de erro (como "erro", "inválido", "não encontrado") aparece em uma planilha de auditoria.


   - Exemplo de uso: Durante uma auditoria de dados, o código pode ser usado para contar ocorrências de erros ou inconsistências em grandes volumes de dados.


4. Análise de Feedback de Clientes:

   - Objetivo: Contar a frequência de termos específicos, como "satisfação", "atendimento" ou "produto", em feedbacks de clientes.


   - Exemplo de uso: Empresas podem usar o código para analisar rapidamente o feedback de clientes e identificar pontos fortes ou áreas de melhoria.


5. Contagem de Ocorrências em Arquivos de Log:

   - Objetivo: Contar quantas vezes uma string de erro ou um evento específico aparece em arquivos de log de sistemas.


   - Exemplo de uso: Administradores de sistemas podem usar a função para identificar rapidamente problemas recorrentes ou padrões de falhas em registros de eventos.



Nenhum comentário:

Postar um comentário

diHITT - Notícias