Supongamos que disponemos de un listado de alumnos, con los siguientes campos: 'Orden', 'Nombre', 'Apellido' y 'Calificación'.
Necesitamos obtener un listado con los cinco mejores alumnos respecto a su calificación obtenida; para ello aplicaremos los criterios de orden y filtro de las tablas dinámicas.
Disponemos del siguiente listado de alumnos:
Lo primero que haremos será construir nuestra tabla dinámica, para lo que seleccionaremos el rango de nuestra base de datos A1:D11; deberemos mandar, del Listado de campos el campo 'Nombre' y 'Apellido' al Área de rótulos de filas y el campo 'Calificación' al Área de valores.
Obtendremos practicamente el mismo listado del que partimos, pero esto es sólo el comienzo; le damos el primer formato quitándole el Subtotal al campo 'Nombre' (botón derecho del ratón sobre el campo 'Nombre' y desmarcamos Subtotal "Nombre"). Nos quedará entonces:
Ya casi acabamos, con el botón derecho del ratón en el campo 'Nombre', buscamos Filtro > Los 10 mejores...
activando la siguiente ventana diálogo, que configuraremos como sigue:
Seleccionaremos los 5 elementos superiores del campo Calificación
Para terminar sólo nos queda ordenar a los cinco alumnos de mayor a menor 'Calificación'. Repetimos la operación, con el botón derecho del ratón en el campo 'Nombre', buscamos Ordenar > Más opciones de ordenación...
ordenaremos según el criterio de las 'Calificaciones' en sentido descendente (de mayor a menor, i.e., de Z a A)
El resultado final obtenido es el deseado, disponemos de un listado con 'Nombres' y 'Apellidos' de los alumnos con las mejores 'Calificaciones'.
Necesitamos obtener un listado con los cinco mejores alumnos respecto a su calificación obtenida; para ello aplicaremos los criterios de orden y filtro de las tablas dinámicas.
Disponemos del siguiente listado de alumnos:
Lo primero que haremos será construir nuestra tabla dinámica, para lo que seleccionaremos el rango de nuestra base de datos A1:D11; deberemos mandar, del Listado de campos el campo 'Nombre' y 'Apellido' al Área de rótulos de filas y el campo 'Calificación' al Área de valores.
Obtendremos practicamente el mismo listado del que partimos, pero esto es sólo el comienzo; le damos el primer formato quitándole el Subtotal al campo 'Nombre' (botón derecho del ratón sobre el campo 'Nombre' y desmarcamos Subtotal "Nombre"). Nos quedará entonces:
Ya casi acabamos, con el botón derecho del ratón en el campo 'Nombre', buscamos Filtro > Los 10 mejores...
activando la siguiente ventana diálogo, que configuraremos como sigue:
Seleccionaremos los 5 elementos superiores del campo Calificación
Para terminar sólo nos queda ordenar a los cinco alumnos de mayor a menor 'Calificación'. Repetimos la operación, con el botón derecho del ratón en el campo 'Nombre', buscamos Ordenar > Más opciones de ordenación...
ordenaremos según el criterio de las 'Calificaciones' en sentido descendente (de mayor a menor, i.e., de Z a A)
El resultado final obtenido es el deseado, disponemos de un listado con 'Nombres' y 'Apellidos' de los alumnos con las mejores 'Calificaciones'.
mil gracias!!! me tenia loco buscando esta opcion en excel 2010. buen blog.
ResponderEliminarEstimado Ismael,
ResponderEliminarEstoy tratando de filtrar los valores de una tabla dinámica y estoy usando este código:
Sheets("Resumen").PivotTables("Movimientos").PivotFields("Cód. Item")
.CurrentPage = Hoja1.Range("J2")
para que el filtro dependa de la celda J2 pero sale el error 1004 y no sé que puede estar mal luego usé este código:
With Sheets("Resumen").PivotTables("Movimientos").PivotFields("Cód. Item")
For i = 1 To .PivotItems.Count
.PivotItems(i).Visible = False
.PivotItems(NumCod).Visible = True
Next i
End With
Para que haga invisible todos los ítems salvo el que necesito, y sí calcula pero me sigue apareciendo un error. A ver si podrías darme una mano.
Gracias anticipadas!!
Hola Yuri,
Eliminarentiendo que recorres todos los elemtnos del campo "Cód. Item" para ocultarlos, y que sólo haces visible el elemento NumCod.. que no sé si es una variable que previamente has creado para identificar cuál quieres ver o que el elemento se llama así...
En cualquier caso saca fuera del bucle For la línea
.PivotItems(NumCod).Visible = True
En todo caso, podría darse la situación de tener un elemento (en blanco) sin valor.. esto suele dar problemas.
Slds
Hola Ismael,
EliminarClaro, numcod es de tipo "string" y apunta a la celda "J2", los errores se pueden arreglar con condicionales, pero el error es arrojado en la línea:
".PivotItems(i).Visible = False"
Pero aunque ya había intentado sacarlo el bucle sigue apareciéndome el error en la línea que te comento.
He visto en otros ejemplos que el primer código debería funcionar pero hay error de código según me dice excel.
Hola Yuri,
EliminarEn principio parece correcto... ya te habrás dado cuenta que trabajar con Tablas dinámicas en las macros se complica muy fácilmente.
Alguna vez he intentado algo similar a lo que tu propones y el fallo, como te indicaba, lo generaba el Item en blanco...
verifica o controla ese Item ( en blanco ) y seguramente te funcione.
Slds
Hola Ismael,
EliminarMe puse a revisar y los más crítico es que no existe ítems en blanco jeje, creo que son uno de esos misterios que se arregla cambiando de versión, o copiando y pegando nuevamente, o cerrando y abriendo el archivo...que complicado resulta a veces esto...muchas gracias por la atención prestada Ismael..a seguir intentando.
Saludos
Saludos Ismael, una pregunta: Como puedo hacer para ordenar a 300 estudiantes con su nota definitiva y si por ejemplo si hay dos con la misma nota les asigne un numero diferente, ejemplo si hay un 9.8 entre tres estudiantes, les corresponderia el nùmero 1,2 y 3 o les debe corresponder el nùmero uno a los tres,gracias por su ayuda, es facil para 10 estudiantes pero para 300 que puedo hacer si no se programar, Gracias de nuevo.
ResponderEliminarHola Fernando,
Eliminarcreo que algo de lo que se explica respecto a JERARQUIA y CONTAR.SI en esta entrada te servirá...
http://excelforo.blogspot.com.es/2009/10/la-funcion-jerarquia-la-ordenacion-de.html
Slds
He creado una tabla dinámica con varios niveles de filtros, por ejemplo: 1. Localidad 2. Clientes; cuando filtro por localidad, pensaba que en clientes solo me aparecerían los clientes de la selección; pero siguen apareciendo todos. Uso Excel 2007. Existe alguna forma de lograr que se filtre de esta manera. Aunque no soy programador VBA, me salen algunas cositas que he probado. Tabla de datos esta creadas por columnas con una para localidad y otra con los clientes, etc.
ResponderEliminarHola que tal estás? Un placer saludarte igualmente.
ResponderEliminarNo es posible hacer nada al respecto... en versiones superiores han implementado la herramienta de Segmentación de datos que cumple con lo que necesitas.
Un cordial saludo
HOLA TENGO ESTA TABLA DINÁMICA:
ResponderEliminarSub Macro1()
'
' Macro1 Macro
'
X = 6 / 8 / 2018
'
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("DÍA")
.PivotItems(8 / 7 / 2018).Visible = False
.PivotItems(X).Visible = True
End With
End Sub
QUISIERA SABER COMO CAMBIAR LAS FECHAS DE LA MISMAS PERO LAS FECHAS SON NUMEROS Y SIEMPRE ME ARROJA UN ERROR EL ERROR ES EL 1004 GRACIAS POR SU AYUDA
Hola
Eliminarhabría que ver los datos de origen y cómo es tu tabla dinámica...
pero empezaría mirando que los datos son fechas de verdad (no son texto), y luego definiría la variable X como Date
Saludos
Si, en efecto mis datos son numero no es texto el problema es que el error siempre ocurre en esta parte y no sé como solucionarlo .PivotItems(8 / 7 / 2018).Visible = False
EliminarHola,
Eliminarprueba poniendo entrecomillado la fecha:
.PivotItems("7/6/2018").Visible = False
y asegurándote que cumple el patrón mm/dd/yyyy
esto es, si la fecha es el 7-ago-2018 entonces "8/7/2018"
Saludos
Este comentario ha sido eliminado por el autor.
ResponderEliminar