Enviada pelo
Site

Quero um código VBA com e sem Vetor que mostre a palavra que

Quero um código VBA com e sem Vetor que mostre a palavra que mais se repete na coluna. Ex: Linha/Coluna A 1 João 2 Maria 3 Ricardo 4 Ricardo 5 Maria 6 Maria A resposta é Maria
Minerva IA
Inteligência Artificial do Profes
Respondeu há 1 semana

Para resolver essa tarefa no Excel usando VBA, você pode criar duas soluções: uma que utiliza um vetor (matriz) e outra que não utiliza. Ambas as soluções analisarão os dados em uma coluna para encontrar a palavra que mais se repete.

Solução 1: Com Vetor

Sub FindMostRepeatedWithArray()
    Dim lastRow As Long
    Dim dataRange As Range
    Dim wordArray() As Variant
    Dim wordCount As Object
    Dim cell As Range
    Dim mostRepeatedWord As String
    Dim maxCount As Long
    Dim word As Variant

    ' Definir a última linha da coluna A 
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    ' Definir o intervalo de dados 
    Set dataRange = Range("A1:A" & lastRow)

    ' Transformar o intervalo de dados em um array
    wordArray = dataRange.Value

    ' Criar um dicionário para contar as palavras
    Set wordCount = CreateObject("Scripting.Dictionary")

    ' Contar a frequência de cada palavra
    For Each word In wordArray
        If Not IsNumeric(word) Then  ' Ignorar valores numéricos
            If wordCount.exists(word) Then
                wordCount(word) = wordCount(word) + 1
            Else
                wordCount.Add word, 1
            End If
        End If
    Next word

    ' Identificar a palavra mais repetida
    For Each word In wordCount.Keys
        If wordCount(word) > maxCount Then
            maxCount = wordCount(word)
            mostRepeatedWord = word
        End If
    Next word

    ' Exibir o resultado
    MsgBox "A palavra que mais se repete é: " & mostRepeatedWord
End Sub

Solução 2: Sem Vetor

Sub FindMostRepeatedWithoutArray()
    Dim lastRow As Long
    Dim dataRange As Range
    Dim wordCount As Object
    Dim cell As Range
    Dim mostRepeatedWord As String
    Dim maxCount As Long

    ' Definir a última linha da coluna A 
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    ' Definir o intervalo de dados 
    Set dataRange = Range("A1:A" & lastRow)

    ' Criar um dicionário para contar as palavras
    Set wordCount = CreateObject("Scripting.Dictionary")

    ' Contar a frequência de cada palavra
    For Each cell In dataRange
        If Not IsNumeric(cell.Value) Then  ' Ignorar valores numéricos
            If wordCount.exists(cell.Value) Then
                wordCount(cell.Value) = wordCount(cell.Value) + 1
            Else
                wordCount.Add cell.Value, 1
            End If
        End If
    Next cell

    ' Identificar a palavra mais repetida
    For Each cell In wordCount.Keys
        If wordCount(cell) > maxCount Then
            maxCount = wordCount(cell)
            mostRepeatedWord = cell
        End If
    Next cell

    ' Exibir o resultado
    MsgBox "A palavra que mais se repete é: " & mostRepeatedWord
End Sub

Ambas as abordagens utilizam um Dictionary do VBA para armazenar e contar a frequência das palavras. A solução com vetor transforma todo o intervalo em um array de uma vez, enquanto a solução sem vetor trabalha diretamente com as células do intervalo. Cada solução identifica a palavra que mais aparece na coluna e exibe o resultado em uma mensagem.

Já tem uma conta? Entrar
Ao me cadastrar, confirmo que li e concordo com os Termos de Uso .
Envie uma dúvida grátis
Resposta na hora da Minerva IA e de professores particulares
Enviar dúvida
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Precisa de outra solução? Conheça
Aulas particulares Encontre um professor para combinar e agendar aulas particulares Buscar professor