Cuente las ocurrencias en la lista de Excel con una lista de más de 400 elementos diferentes

Cuente las ocurrencias en la lista de Excel con una lista de más de 400 elementos diferentes

Tengo una lista de aproximadamente 5.000 líneas en las que quiero contar las apariciones de cada elemento.

Hay entre 300 y 400 elementos diferentes en esta lista.

En lugar de escribir más de 300 fórmulas únicas que parecen

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

¿Hay alguna manera de lograr este objetivo con algún tipo de fórmula mejorada?

A continuación se muestra una lista de ejemplo que tomé prestada de una pregunta publicada anteriormente porque demuestra lo que estoy tratando de lograr; sin embargo, en mi caso tengo de 300 a 400 elementos diferentes, no solo A, B, C, D y E:

"Tengo una lista de elementos que se parece a esto:"

A
B
C
A
A
B
D
E
A

"Ahora quiero contar el número de apariciones de cada elemento. El resultado debería verse así:"

A 4
B 2
C 1
D 1
E 1

Crédito a RoflcoptrException por publicar la pregunta original.

Respuesta1

Una forma sencilla de hacerlo es exportar los valores a un archivo de texto, por ejemplo f.txt, y ejecutar el siguiente .batscript en la misma carpeta:

@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

Ejecutarlo en sus datos de muestra devuelve:

ingrese la descripción de la imagen aquí

Respuesta2

En lugar de una fórmula, me gustaría sugerir el método más rápido: VBA Macrocontar la aparición de varios elementos.

ingrese la descripción de la imagen aquí

Cómo funciona:

  • Para crear una lista única de elementos que se van a contar, la fórmula matricial (CSE) en la celda C68:

    {=IFERROR(INDEX($A$68:$A$78, MATCH(0,COUNTIF($C$67:C67, $A$68:$A$78), 0)),"")}
    
  • Termine la fórmula conCtrl+Mayús+Entrar& llenar hacia abajo.

  • O presioneAlt+F11oRHaga clic derecho en la pestaña TAB de la hoja y presioneVVer código.

  • En la ventana del editor de VB desdeIinsertar comando hacer clicMETROodulo.

  • Ccopiar yPAGGuarde 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
    
  • Guarde el libro de trabajo como macro habilitada (.xlsm).

  • Ingrese esta fórmula en la celda D68, complete:

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

  • Para contar la aparición en varias columnas, puede utilizar una fórmula como esta.

=CountString($C68,A:C)

Ajuste las referencias de celda en la fórmula según sea necesario.

información relacionada