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