Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados.
Veja se esse VBA ajuda você!
Aqui está um exemplo de código que irá ajudá-lo a obter o ranking dos clientes mais contatados durante um determinado período. Você precisará modificar o código para adaptá-lo à sua tabela de dados, incluindo os nomes das colunas corretas.
Sub ObterRankingClientes()
Dim rngData As Range
Dim strDataInicial As String
Dim strDataFinal As String
Dim dictClientes As Object
Dim c As Range
Dim i As Long
'definir intervalo de dados
Set rngData = Range("A1").CurrentRegion
'definir período desejado
strDataInicial = "01/01/2023"
strDataFinal = "31/01/2023"
'criar objeto dicionário para armazenar contagem de clientes
Set dictClientes = CreateObject("Scripting.Dictionary")
'loop através dos dados e contar clientes contatados
For Each c In rngData.Rows
If c.Value >= strDataInicial And c.Value <= strDataFinal Then
If Not dictClientes.Exists(c.Offset(0, 1).Value) Then
dictClientes.Add c.Offset(0, 1).Value, 1
Else
dictClientes(c.Offset(0, 1).Value) = dictClientes(c.Offset(0, 1).Value) + 1
End If
End If
Next c
'exibir resultados em ordem decrescente
i = 1
Range("E2:F11").ClearContents
Range("E2").Value = "Clientes"
Range("F2").Value = "Contagem"
For Each Key In SortDictionaryDescending(dictClientes)
If i <= 10 Then
Range("E" & i + 2).Value = Key
Range("F" & i + 2).Value = dictClientes(Key)
i = i + 1
Else
Exit For
End If
Next Key
End Sub
Function SortDictionaryDescending(dict As Object) As Variant()
Dim arrKeys As Variant
Dim arrResults As Variant
Dim i As Long
Dim j As Long
Dim temp As String
'criar array com chaves do dicionário
arrKeys = dict.Keys
'ordenar chaves em ordem decrescente de valor
For i = LBound(arrKeys) To UBound(arrKeys)
For j = i + 1 To UBound(arrKeys)
If dict(arrKeys(j)) > dict(arrKeys(i)) Then
temp = arrKeys(i)
arrKeys(i) = arrKeys(j)
arrKeys(j) = temp
End If
Next j
Next i
'criar array com resultados ordenados
ReDim arrResults(0 To UBound(arrKeys))
For i = LBound(arrKeys) To UBound(arrKeys)
arrResults(i) = arrKeys(i)
Next i
SortDictionaryDescending = arrResults
End Function
Este código conta o número de vezes que cada cliente foi contatado durante um período específico e, em seguida, exibe os 10 clientes com mais contatos em ordem decrescente. O código também usa uma função auxiliar para classificar o dicionário em ordem decrescente de valor.
Espero que isso ajude!
Se alguma resposta acima lhe auxiliou, por favor, não se esqueça de marcar como "Sim A resposta resolveu o problema". Isso ajudará outros usuários que possam ter a mesma dúvida.
Se você tiver qualquer dúvida ou precisar de mais informações, fique à vontade para entrar em contato. Obrigado pela sua confiança em nossa comunidade.