Conte ocorrências na lista do Excel com mais de 400 itens diferentes

Conte ocorrências na lista do Excel com mais de 400 itens diferentes

Tenho uma lista de cerca de 5 mil linhas nas quais desejo contar as ocorrências de cada item.

Existem cerca de 300 a 400 itens diferentes nesta lista.

Em vez de digitar mais de 300 fórmulas exclusivas parecidas com

=COUNTIF(A1:A5000,"A")
=COUNTIF(A1:A5000,"B")
=COUNTIF(A1:A5000,"C")
=COUNTIF(A1:A5000,"D")
=COUNTIF(A1:A5000,"E")
ETC to 300...

, existe uma maneira de atingir esse objetivo com algum tipo de fórmula aprimorada?

Abaixo está um exemplo de lista que peguei emprestado de uma pergunta postada anteriormente porque demonstra o que estou tentando realizar, no entanto, no meu caso, tenho de 300 a 400 itens diferentes, não apenas A, B, C, D e E:

"Eu tenho uma lista de itens parecidos com isto:"

A
B
C
A
A
B
D
E
A

"Agora quero contar o número de ocorrências de cada item. O resultado deve ficar assim:"

A 4
B 2
C 1
D 1
E 1

Agradecemos a RoflcoptrException por postar a pergunta original.

Responder1

Uma maneira simples de fazer isso é exportar os valores para um arquivo de texto, digamos f.txt, e executar o seguinte .batscript na mesma pasta:

@echo off
setlocal

rem Accumulate each occurrence in its corresponding array element
for /F %%a in (f.txt) do set /A "[%%a]+=1"

rem Show the result
for /F %%a in ('set [') do echo %%a

Executá-lo em seus dados de amostra retorna:

insira a descrição da imagem aqui

Responder2

Em vez de uma fórmula, gostaria de sugerir o método mais rápido, para VBA Macrocontar a ocorrência de vários itens.

insira a descrição da imagem aqui

Como funciona:

  • Para criar uma lista exclusiva de itens a serem contados, a fórmula de matriz (CSE) na célula C68:

    {=IFERROR(INDEX($A$68:$A$78, MATCH(0,COUNTIF($C$67:C67, $A$68:$A$78), 0)),"")}
    
  • Finalize a fórmula comCtrl+Shift+Enter& Preencher.

  • PressioneAlt+F11ouRclique com o botão direito na planilha TAB e pressioneVvisualizar o código.

  • Na janela do editor VB deEUinserir comando cliqueModule.

  • Copa ePaste este código.

    Public Function CountString(SearchFor As String, InRange As Range) As Long
    
      Dim wbcs As Long, rng As Range, addr As String
       For Each s In Worksheets
    
    addr = InRange.Address
    Set rng = s.Range(addr)
    
    wbcs = wbcs + Application.WorksheetFunction.CountIf(rng, "*" & SearchFor & "*")
     Next s
     CountString = wbcs
    
     End Function
    
  • Salvar pasta de trabalho como macro habilitada (.xlsm).

  • Insira esta fórmula na célula D68e preencha:

=CountString($C68,A$68:A$78)

  • Para contar a ocorrência em múltiplas colunas, você pode usar uma fórmula como esta.

=CountString($C68,A:C)

Ajuste as referências de células na fórmula conforme necessário.

informação relacionada