Selección de coordenadas

Tienes un monitor grande, pero las mesas con las que trabajas son aún más grandes. Y, al mirar la pantalla en busca de la información necesaria, siempre existe la posibilidad de "deslizar" los ojos a la siguiente línea y mirar en la dirección equivocada. Incluso conozco gente que, para tales ocasiones, siempre tiene cerca una regla de madera para pegarla a la línea del monitor. ¡Tecnologías del futuro! 

¿Y si la fila y la columna actuales se resaltan cuando la celda activa se mueve por la hoja? Una especie de selección de coordenadas como esta:

Mejor que una regla, ¿verdad?

Hay varias formas de diferente complejidad para implementar esto. Cada método tiene sus pros y sus contras. Echemos un vistazo a ellos en detalle.

Método 1. Obvio. Macro que resalta la fila y columna actual

La forma más obvia de resolver nuestro problema "en la frente": necesitamos una macro que rastree el cambio en la selección en la hoja y seleccione la fila y la columna completas para la celda actual. También es deseable poder habilitar y deshabilitar esta función si es necesario, para que una selección tan en forma de cruz no nos impida ingresar, por ejemplo, fórmulas, sino que solo funcione cuando repasamos la lista en busca de las necesarias. información. Esto nos lleva a las tres macros (seleccionar, habilitar y deshabilitar) que deberán agregarse al módulo de hoja.

Abra una hoja con una tabla en la que desee obtener dicha selección de coordenadas. Haga clic derecho en la pestaña de la hoja y seleccione el comando del menú contextual Texto de origen (Código fuente).La ventana del Editor de Visual Basic debería abrirse. Copie este texto de estas tres macros en él:

Dim Coord_Selection As Boolean 'Variable global para activar/desactivar la selección Sub Selection_On() 'Macro en la selección Coord_Selection = True End Sub Selection_Off() 'Macro en la selección Coord_Selection = False End Sub 'Procedimiento principal que realiza la selección Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range If Target.Cells.Count > 1 Then Exit Sub 'si se selecciona más de 1 celda, salga If Coord_Selection = False Then Exit Sub 'si la selección está desactivada, salga de Application.ScreenUpdating = False Set WorkRange = Range (" A6:N300") 'dirección del rango de trabajo dentro del cual es visible la selección  

Cambie la dirección del rango de trabajo por la suya; es dentro de este rango que funcionará nuestra selección. Luego cierre el Editor de Visual Basic y regrese a Excel.

Presione el atajo de teclado ALT + F8para abrir una ventana con una lista de macros disponibles. Macro Selección_activada, como puede suponer, incluye la selección de coordenadas en la hoja actual y la macro Selección_desactivada – lo apaga. En la misma ventana, haciendo clic en el botón parámetros (Opciones) Puede asignar métodos abreviados de teclado a estas macros para iniciarlas fácilmente.

Ventajas de este método:

  • relativa facilidad de implementación
  • selección: la operación es inofensiva y no cambia el contenido o el formato de las celdas de la hoja de ninguna manera, todo permanece como está

Contras de este método:

  • dicha selección no funciona correctamente si hay celdas combinadas en la hoja: todas las filas y columnas incluidas en la unión se seleccionan a la vez
  • si presiona accidentalmente la tecla Eliminar, no solo se borrará la celda activa, sino toda el área seleccionada, es decir, eliminará los datos de toda la fila y la columna

Método 2. Original. CELL + función de formato condicional

Este método, aunque tiene un par de inconvenientes, me parece muy elegante. Para implementar algo usando solo las herramientas integradas de Excel, entrar mínimamente en la programación en VBA es acrobacia aérea 😉

El método se basa en el uso de la función CELDA, que puede brindar mucha información diferente en una celda determinada: alto, ancho, número de fila-columna, formato de número, etc. Esta función tiene dos argumentos:

  • una palabra clave para el parámetro, como "columna" o "fila"
  • la dirección de la celda para la que queremos determinar el valor de este parámetro

El truco es que el segundo argumento es opcional. Si no se especifica, se toma la celda activa actual.

El segundo componente de este método es el formato condicional. Esta característica de Excel extremadamente útil le permite formatear automáticamente las celdas si cumplen las condiciones especificadas. Si combinamos estas dos ideas en una, obtenemos el siguiente algoritmo para implementar nuestra selección de coordenadas a través del formato condicional:

  1. Seleccionamos nuestra tabla, es decir, aquellas celdas en las que se debe mostrar la selección de coordenadas en el futuro.
  2. En Excel 2003 y anteriores, abra el menú Formato – Formato condicional – Fórmula (Formato — Formato condicional — Fórmula). En Excel 2007 y posteriores, haga clic en la pestaña Inicio (Home). Formato condicional – Crear regla (Formato condicional — Crear regla) y elige el tipo de regla Use una fórmula para determinar qué celdas formatear (Usar fórmula)
  3. Introduzca la fórmula para nuestra selección de coordenadas:

    =O(CELDA(“fila”)=FILA(A2),CELDA(“columna”)=COLUMNA(A2))

    =O(CELDA(«fila»)=FILA(A1),CELDA(«columna»)=COLUMNA(A1))

    Esta fórmula comprueba si el número de columna de cada celda de la tabla es el mismo que el número de columna de la celda actual. Lo mismo con las columnas. Por lo tanto, solo se completarán aquellas celdas que tengan un número de columna o un número de fila que coincida con la celda actual. Y esta es la selección de coordenadas en forma de cruz que queremos lograr.

  4. Нажмите кнопку Marco conceptual (Formato) y establecer el color de relleno.

Todo está casi listo, pero hay un matiz. El hecho es que Excel no considera un cambio en la selección como un cambio en los datos de la hoja. Y, como resultado, no activa el recálculo de fórmulas y el cambio de color del formato condicional solo cuando cambia la posición de la celda activa. Por lo tanto, agreguemos una macro simple al módulo de hoja que hará esto. Haga clic derecho en la pestaña de la hoja y seleccione el comando del menú contextual Texto de origen (Código fuente).La ventana del Editor de Visual Basic debería abrirse. Copie este texto de esta macro simple en él:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveCell.Calculate End Sub  

Ahora, cuando cambie la selección, se lanzará el proceso de recalcular la fórmula con la función CÉLULA en formato condicional e inundar la fila y la columna actuales.

Ventajas de este método:

  • El formato condicional no rompe el formato de tabla personalizado
  • Esta opción de selección funciona correctamente con celdas combinadas.
  • No hay riesgo de eliminar una fila y una columna completas de datos con un clic accidental Borrar.
  • Las macros se utilizan mínimamente

Contras de este método:

  • La fórmula para el formato condicional debe ingresarse manualmente.
  • No existe una forma rápida de habilitar o deshabilitar dicho formato: siempre está habilitado hasta que se elimina la regla.

Método 3. Óptimo. Formato Condicional + Macros

Medio dorado. Usamos el mecanismo para rastrear la selección en la hoja usando macros del método 1 y le agregamos un resaltado seguro usando el formato condicional del método 2.

Abra una hoja con una tabla en la que desee obtener dicha selección de coordenadas. Haga clic derecho en la pestaña de la hoja y seleccione el comando del menú contextual Texto de origen (Código fuente).La ventana del Editor de Visual Basic debería abrirse. Copie este texto de estas tres macros en él:

Dim Coord_Selection As Boolean Sub Selection_On() Coord_Selection = True End Sub Sub Selection_Off() Coord_Selection = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range, CrossRange As Range Set WorkRange = Range("A7:N300") If Target.Count > 1 Then Exit Sub If Coord_Selection = False Then WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = False If Not Intersect(Target, WorkRange) Is Nothing Then Set CrossRange = Intersect( WorkRange, Union(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).Interior.ColorIndex = 33 Target.FormatConditions .Eliminar Finalizar si End Sub  

No olvide cambiar la dirección del rango de trabajo a la dirección de su mesa. Cierre el Editor de Visual Basic y regrese a Excel. Para usar las macros agregadas, presione el atajo de teclado ALT + F8  y proceda de la misma manera que el método 1. 

Método 4. Hermoso. Complemento FollowCellPointer

El MVP de Excel, Jan Karel Pieterse, de los Países Bajos, regala un complemento gratuito en su sitio web. SeguirCellPointer(36Kb), que resuelve el mismo problema dibujando líneas de flechas gráficas usando macros para resaltar la fila y la columna actuales:

 

Buena solución. No sin fallas en algunos lugares, pero definitivamente vale la pena intentarlo. Descargue el archivo, descomprímalo en el disco e instale el complemento:

  • en Excel 2003 y anteriores – a través del menú Servicio – Complementos – Resumen (Herramientas — Complementos — Examinar)
  • en Excel 2007 y posterior, a través de Archivo – Opciones – Complementos – Ir – Examinar (Archivo — Opciones de Excel — Complementos — Ir a — Examinar)

  • Qué son las macros, dónde insertar código de macro en Visual Basic

 

Deje un comentario