Ocultar/mostrar filas y columnas innecesarias

Formulación del problema

Supongamos que tenemos una mesa con la que tenemos que "bailar" todos los días:

 

A quien la tabla le parezca pequeña, multiplíquela mentalmente veinte veces por área, agregando un par de cuadras más y dos docenas de grandes ciudades. 

La tarea es eliminar temporalmente de la pantalla filas y columnas que actualmente no son necesarias para el trabajo, es decir, 

  • ocultar detalles por mes, dejando solo trimestres
  • ocultar totales por meses y trimestres, dejando solo el total de medio año
  • ocultar ciudades que son innecesarias en este momento (trabajo en Moscú, ¿por qué debería ver San Petersburgo?), etc.

En la vida real, hay un mar de ejemplos de tales tablas.

Método 1: ocultar filas y columnas

El método, francamente, es primitivo y no muy conveniente, pero se pueden decir dos palabras al respecto. Cualquier fila o columna previamente seleccionada en una hoja se puede ocultar haciendo clic derecho en el encabezado de la columna o fila y seleccionando el comando del menú contextual Esconder (Ocultar):

 

Para la visualización inversa, seleccione filas/columnas adyacentes y, haciendo clic con el botón derecho, seleccione del menú, respectivamente, la visualización (Mostrar).

El problema es que tienes que lidiar con cada columna y fila individualmente, lo cual es un inconveniente.

Método 2. Agrupación

Si selecciona varias filas o columnas y luego selecciona del menú Datos – Grupo y Estructura – Grupo (Datos — Grupo y Esquema — Grupo), entonces estarán entre corchetes (agrupados). Además, los grupos se pueden anidar unos en otros (se permiten hasta 8 niveles de anidamiento):

Una forma más conveniente y rápida es usar un atajo de teclado para agrupar filas o columnas preseleccionadas. Alt+Mayús+Flecha derecha, y para desagrupar Alt+Mayús+Flecha izquierda, respectivamente.

Este método de ocultar datos innecesarios es mucho más conveniente: puede hacer clic en el botón con el "+"O"-“, o en los botones con un nivel de agrupación numérica en la esquina superior izquierda de la hoja, entonces todos los grupos del nivel deseado se contraerán o expandirán a la vez.

También, si su tabla contiene filas o columnas de resumen con la función de sumar celdas vecinas, es decir, una posibilidad (no 100% cierta) de que Excel él creará todos los grupos necesarios en la mesa con un movimiento – a través del menú Datos – Grupo y Estructura – Crear Estructura (Datos — Agrupar y esquema — Crear esquema). Desafortunadamente, tal función funciona de manera muy impredecible y, a veces, no tiene sentido en tablas complejas. Pero puedes intentar.

En Excel 2007 y posteriores, todas estas alegrías están en la pestaña Datos (Fecha) en grupo   Estructura (Describir):

Método 3. Ocultar filas/columnas marcadas con una macro

Este método es quizás el más versátil. Agreguemos una fila y una columna vacías al principio de nuestra hoja y marquemos con cualquier ícono aquellas filas y columnas que queremos ocultar:

Ahora abramos el Editor de Visual Basic (ALT + F11), inserte un nuevo módulo vacío en nuestro libro (menú Insertar – Módulo) y copie el texto de dos macros simples allí:

Sub Hide() Dim cell As Range Application.ScreenUpdating = False 'Deshabilita la actualización de pantalla para acelerar Para cada celda en ActiveSheet.UsedRange.Rows(1).Cells 'Itera sobre todas las celdas en la primera fila If cell.Value = "x " Then cell .EntireColumn.Hidden = True 'if in cell x - hide column Next For Each cell In ActiveSheet.UsedRange.Columns(1).Cells 'recorre todas las celdas de la primera columna If cell.Value = "x" Entonces cell.EntireRow.Hidden = True 'if in cell x - hide the row Next Application.ScreenUpdating = True End Sub Sub Show() Columns.Hidden = False 'cancela todas las filas y columnas ocultas Rows.Hidden = False End Sub  

Como puede suponer, la macro Esconder se esconde y la macro Espectáculo – Muestra filas y columnas etiquetadas. Si lo desea, a las macros se les pueden asignar teclas de acceso rápido (Alt + F8 y botón parámetros), o cree botones directamente en la hoja para lanzarlos desde la pestaña Desarrollador – Insertar – Botón (Desarrollador — Insertar — Botón).

Método 4. Ocultar filas/columnas con un color dado

Digamos que en el ejemplo anterior, nosotros, por el contrario, queremos ocultar los totales, es decir, filas moradas y negras y columnas amarillas y verdes. Luego, nuestra macro anterior deberá modificarse ligeramente agregando, en lugar de verificar la presencia de "x", una verificación para hacer coincidir el color de relleno con celdas de muestra seleccionadas al azar:

Sub HideByColor() Dim cell As Range Application.ScreenUpdating = False para cada celda en ActiveSheet.UsedRange.Rows(2).Cells If cell.Interior.Color = Range("F2").Interior.Color Then cell.EntireColumn.Hidden = True If cell.Interior.Color = Range("K2").Interior.Color Then cell.EntireColumn.Hidden = True Next para cada celda en ActiveSheet.UsedRange.Columns(2).Cells If cell.Interior.Color = Range ("D6").Interior.Color Entonces cell.EntireRow.Hidden = True If cell.Interior.Color = Range("B11").Interior.Color Then cell.EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub  

Sin embargo, no debemos olvidarnos de una advertencia: esta macro solo funciona si las celdas de la tabla de origen se rellenaron con color manualmente y no se utiliza el formato condicional (esta es una limitación de la propiedad Interior.Color). Entonces, por ejemplo, si resaltó automáticamente todas las transacciones en su tabla donde el número es menor a 10 usando el formato condicional:

Ocultar/mostrar filas y columnas innecesarias

… y desea ocultarlos en un solo movimiento, entonces la macro anterior deberá estar “terminada”. Si tiene Excel 2010-2013, puede salir usando en lugar de la propiedad Interior perfecta DisplayFormat.Interior, que genera el color de la celda, independientemente de cómo se haya configurado. La macro para ocultar las líneas azules podría verse así:

Sub HideByConditionalFormattingColor() Dim cell As Range Application.ScreenUpdating = False para cada celda en ActiveSheet.UsedRange.Columns(1).Cells If cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color Then cell .EntireRow.Hidden = True Next Application.ScreenUpdating = True End Sub  

La celda G2 se toma como muestra para la comparación de colores. Desafortunadamente la propiedad Formato de pantalla apareció en Excel solo a partir de la versión 2010, por lo que si tiene Excel 2007 o anterior, tendrá que encontrar otras formas.

  • Qué es una macro, dónde insertar código de macro, cómo usarlas
  • Agrupación automática en listas multinivel

 

Deje un comentario