Listar valores basados ​​en criterios

4

Tengo una tabla en una hoja de trabajo llamada "DealSetup" que se parece a esta versión simplificada:

   A           B
1  John Doe    1
2  Jane Doe    1
3  Mark Doe    2
4  Doug Doe    1
5  Mary Doe    2

Tengo una tabla en una hoja de trabajo llamada "Lista" en la que me gustaría extraer los nombres de la hoja de trabajo "DealSetup". Sin embargo, solo quiero enumerar los nombres basados ​​en el valor de la columna B.

Por ejemplo, en la hoja de trabajo "Lista", me gustaría usar algún tipo de INDICE o función de matriz de algún tipo para mirar la hoja "DealSetup" y extraer todos los que el valor de la columna B es 1 y enumerarlos. Sin embargo, no quiero espacios en blanco. Debe tener un aspecto como este:

 EVERYONE WITH B COLUMN VALUE OF 1:  
   A  
1  John Doe
2  Jane Doe
3  Doug Doe

O así:

 EVERYONE WITH B COLUMN VALUE OF 2:  
   A  
1  Mark Doe
2  Mary Doe

He estado intentando algunas cosas sin suerte. No estoy seguro de a dónde ir desde aquí, por lo que cualquier comentario sería apreciado.

drumichael611
fuente
echa un vistazo a la funcionalidad avanzada del filtro: se puede hacer con él (aunque no de forma totalmente automática)
Peter Albert
He probado el filtro Avanzado, pero el problema es que copia los valores y solo quiero que se enumeren dinámicamente. ¡Gracias!
drumichael611
¿Puedes usar columnas de soporte?
Peter Albert
1
Cuando dice tabla, ¿se refiere a un objeto de tabla o una tabla en celdas?
Raystafarian
"Dinámicamente" - ¿De qué tipo? ¿Al agregar nuevos valores a la hoja DealSetup ? ¿O cuando cambia los criterios en la hoja Lista ? Además, ¿VBA es una solución válida? Una macro podría ser activada por uno de los eventos nombrados anteriormente y volver a aplicar el filtro avanzado en su lugar
nixda

Respuestas:

4

Suponiendo que sus datos DealSetup!A$2:B$6pueden usar esta fórmula enList!A2

=IFERROR(INDEX(DealSetup!A$2:A$6,SMALL(IF(DealSetup!B$2:B$6=C$1,ROW(DealSetup!A$2:A$6)-ROW(DealSetup!A$2)+1),ROWS(A$2:A2))),"")

confirme con CTRL+ SHIFT+ ENTERy copie hasta donde sea necesario y más. Cuando te quedas sin nombres obtienes espacios en blanco.

Asume criterios (1,2, etc.) en C1

ver el libro adjunto : intente cambiar C1a 2

Si los nombres se repiten (dentro de los criterios especificados), se repetirán los nombres: la fórmula se puede ajustar para mostrar cada nombre una sola vez, es decir, esta versión

=IFERROR(INDEX(DealSetup!A$2:A$6,SMALL(IF(DealSetup!B$2:B$6=C$1,IF(COUNTIF(A$1:A1,DealSetup!A$2:A$6)=0,ROW(DealSetup!A$2:A$6)-ROW(DealSetup!A$2)+1)),1)),"")

barry houdini
fuente
-1

Si desea una solución con fórmulas, tendrá espacios en blanco en la parte inferior. No hay forma de que las celdas que contienen la fórmula crezcan y se reduzcan a medida que cambia su lista. Su tabla con fórmulas debe tener la misma altura que sus datos sin procesar para asegurarse de que no se pierda nada si, por ejemplo, todos tienen una 1columna B. Si sabe que ese nunca será el caso, puede reducir el número de filas en la Listhoja de trabajo, pero es un riesgo. Aquí hay una fórmula que los devolverá a todos en orden con espacios en blanco en la parte inferior. Es una fórmula de matriz, así que ingrésela con Ctrl+ Shift+ Enter: (Barry Houdini ya presentó una solución similar)

{=IFERROR(INDEX(DealSetup!$A:$A,SMALL(IF(DealSetup!$B:$B=1,ROW(DealSetup!$B:$B)),ROW())),"")}

Si no puede aceptar espacios en blanco en la parte inferior, tendrá que ser una solución de tabla dinámica o VBA. Esta pregunta es bastante antigua, así que desafortunadamente no espero ver a OP aquí pronto.

Tostadas de ingeniero
fuente