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 .bat
script 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:
Respuesta2
En lugar de una fórmula, me gustaría sugerir el método más rápido: VBA Macro
contar la aparición de varios elementos.
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.