Esto parece una simple tabla dinámica para aprender. Me gustaría hacer un recuento de valores únicos para un valor particular en el que estoy agrupando.
Por ejemplo, tengo esto:
ABC 123
ABC 123
ABC 123
DEF 456
DEF 567
DEF 456
DEF 456
Lo que quiero es una tabla dinámica que me muestre esto:
ABC 1
DEF 2
La tabla dinámica simple que creo simplemente me da esto (un recuento de cuántas filas):
ABC 3
DEF 4
Pero quiero el número de valores únicos en su lugar.
Lo que realmente estoy tratando de hacer es descubrir qué valores en la primera columna no tienen el mismo valor en la segunda columna para todas las filas. En otras palabras, "ABC" es "bueno", "DEF" es "malo"
Estoy seguro de que hay una manera más fácil de hacerlo, pero pensé en probar la tabla dinámica ...
excel
excel-formula
pivot-table
usuario1586422
fuente
fuente
Respuestas:
Inserte una tercera columna y en la celda
C2
pegue esta fórmulay copiarlo Ahora cree su pivote basado en la primera y tercera columna. Ver instantánea
fuente
=IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)
(presione Ctrl-Shift-Enter al ingresar la fórmula para que se adquiera{}
a su alrededor).ACTUALIZACIÓN: puede hacer esto ahora automáticamente con Excel 2013. He creado esto como una nueva respuesta porque mi respuesta anterior en realidad resuelve un problema ligeramente diferente.
Si tiene esa versión, seleccione sus datos para crear una tabla dinámica, y cuando cree su tabla, asegúrese de que la opción 'Agregar estos datos al Modelo de datos' esté marcada (ver más abajo).
Luego, cuando se abra su tabla dinámica, cree sus filas, columnas y valores normalmente. Luego, haga clic en el campo del que desea calcular el recuento distinto y edite la Configuración del valor del campo:
Finalmente, desplácese hacia abajo hasta la última opción y elija 'Conteo distinto'.
Esto debería actualizar los valores de su tabla dinámica para mostrar los datos que está buscando.
fuente
Me gustaría agregar una opción adicional a la mezcla que no requiere una fórmula pero que podría ser útil si necesita contar valores únicos dentro del conjunto en dos columnas diferentes. Usando el ejemplo original, no tenía:
y quiero que aparezca como:
Pero algo más como:
y quería que apareciera como:
Encontré que la mejor manera de obtener mis datos en este formato y luego poder manipularlos más fue usar lo siguiente:
Una vez que seleccione 'Total acumulado en', elija el encabezado para el conjunto de datos secundario (en este caso, sería el encabezado o título de columna del conjunto de datos que incluye 123, 456 y 567). Esto le dará un valor máximo con el recuento total de elementos en ese conjunto, dentro de su conjunto de datos primario.
Luego copié estos datos, los pegué como valores, luego los puse en otra tabla dinámica para manipularlos más fácilmente.
Para su información, tenía alrededor de un cuarto de millón de filas de datos, por lo que funcionó mucho mejor que algunos de los enfoques de fórmula, especialmente aquellos que intentan comparar entre dos columnas / conjuntos de datos porque seguía bloqueando la aplicación.
fuente
Encontré que el enfoque más fácil es usar la
Distinct Count
opción debajoValue Field Settings
( haga clic izquierdo en el campo en elValues
panel). La opción paraDistinct Count
está al final de la lista.Aquí están el antes (ARRIBA; normal
Count
) y después (ABAJO;Distinct Count
)fuente
Vea los artículos únicos de la cuenta de Debra Dalgleish
fuente
No es necesario que la tabla se ordene para que la siguiente fórmula devuelva un 1 por cada valor único presente.
suponiendo que el rango de la tabla para los datos presentados en la pregunta es A1: B7 ingrese la siguiente fórmula en la celda C1:
Copie esa fórmula en todas las filas y la última fila contendrá:
Esto da como resultado un 1 devuelto la primera vez que se encuentra un registro y 0 para todos los tiempos posteriores.
Simplemente suma la columna en tu tabla dinámica
fuente
=IF(COUNTIF($B$1:$B1,B1),1,0)
: de esta manera, ¡countif solo se ejecuta una vez!Mi enfoque de este problema fue un poco diferente de lo que veo aquí, así que lo compartiré.
Nota: Me gustaría incluir imágenes para que esto sea aún más fácil de entender, pero no puedo porque esta es mi primera publicación;)
fuente
La respuesta de Siddharth es excelente.
Sin embargo , esta técnica puede causar problemas al trabajar con un gran conjunto de datos (mi computadora se congeló en 50,000 filas). Algunos métodos menos intensivos en procesador:
Verificación de singularidad única
Use una fórmula que busque menos datos
Múltiples comprobaciones de unicidad
Si necesita verificar la unicidad en diferentes columnas, no puede confiar en dos tipos.
En lugar,
Agregue una fórmula que cubra el número máximo de registros para cada grupo. Si ABC puede tener 50 filas, la fórmula será
fuente
=A2&B2
. Luego agregue una columna D y en D2 ponga=IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0)
. Rellene ambos hacia abajo. Si bien esto todavía se busca desde el comienzo de todo el rango, se detiene cuando encuentra el primero y, en lugar de multiplicar los valores de 50,000 filas, solo tiene que localizar el valor, por lo que debería funcionar mucho mejor.Excel 2013 puede hacer un recuento distinto en pivotes. Si no hay acceso a 2013, y es una cantidad menor de datos, hago dos copias de los datos sin procesar, y en la copia b, selecciono ambas columnas y elimino los duplicados. Luego haga el pivote y cuente su columna b.
fuente
Puede usar COUNTIFS para varios criterios,
= 1 / COUNTIFS (A: A, A2, B: B, B2) y luego arrastre hacia abajo. Puede poner tantos criterios como desee allí, pero su procesamiento suele llevar mucho tiempo.
fuente
Paso 1. Agregar una columna
Paso 2. Use la fórmula =
IF(COUNTIF(C2:$C$2410,C2)>1,0,1)
en el 1er registroPaso 3. Arrástrelo a todos los registros
Paso 4. Filtre '1' en la columna con fórmula
fuente
Puede hacer una columna adicional para almacenar la unicidad, luego sumar eso en la tabla dinámica.
Lo que quiero decir es que la célula
C1
siempre debería serlo1
. La celdaC2
debe contener la fórmula=IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1)
. Copie esta fórmula hacia abajo para que la celdaC3
contenga=IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)
y así sucesivamente.Si tiene una celda de encabezado, querrá moverlos todos hacia abajo una fila y su
C3
fórmula debería ser=IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1)
.fuente
Si tiene los datos ordenados ... sugiero usar la siguiente fórmula
Esto es más rápido ya que usa menos celdas para calcular.
fuente
Normalmente ordeno los datos por el campo que necesito para hacer el recuento distinto y luego uso IF (A2 = A1,0,1); obtienes un 1 en la fila superior de cada grupo de ID. Simple y no toma ningún tiempo para calcular en grandes conjuntos de datos.
fuente
Puede usar para la columna auxiliar también
VLOOKUP
. Lo probé y parece un poco más rápido queCOUNTIF
.Si está utilizando el encabezado y los datos comienzan en la celda
A2
, entonces, en cualquier celda de la fila, use esta fórmula y copie en todas las demás celdas de la misma columna:fuente
Encontré una manera más fácil de hacer esto. Refiriéndome al ejemplo de Siddarth Rout, si quiero contar valores únicos en la columna A:
fuente
B
. ¿Cómo va a adaptar esto para trabajar con múltiples columnas?