Excel VBA - Unión e intersección

Excel VBA tiene dos métodos, pertenecientes al objeto Aplicación, para manipular dos o más rangos: Unión e Intersección.

Unión

El método de unión devuelve todas las celdas en dos o más rangos pasados ​​como argumento.

El siguiente comando seleccionará el rango que se muestra en la imagen a continuación:

1 Unión (Rango ("A1: B4"), Rango ("B3: C6")). Seleccionar

Puede asignar cualquier valor o fórmula al rango devuelto por el método Union:

1 Unión (rango ("A1: B4"), rango ("B3: C6")) = 10

Esto ingresará el valor 10 en cada celda de la Unión.

Puede ajustar cualquier función que resuma un rango alrededor de un método de Unión. El siguiente ejemplo devolverá la suma de los valores en los rangos A1: B4 y B3: C6:

1 Resultado = Application.WorksheetFunction.Sum (union (Range ("A1: B4"), Range ("B3: C6")))

¡Puede que se sorprenda al obtener el valor en Resultado como 160! Aunque solo hay 14 celdas en la Unión (8 en cada rango, siendo 2 comunes) cuando mira Selección, Unión en realidad devuelve 16 celdas, por lo tanto, el Resultado es 160.

Intersecarse

El método Intersect devuelve solo las celdas comunes en dos o más rangos pasados ​​como argumento.

El siguiente comando seleccionará el rango que se muestra (área gris) en la imagen a continuación:

1 Intersecar (Rango ("A1: B4"), Rango ("B3: C6")). Seleccionar

Uso de Intersect

El uso más común de Intersect es en eventos asociados con una hoja de trabajo o un libro de trabajo. Se utiliza para probar si las celdas cambiadas pertenecen a un rango de interés. El siguiente ejemplo verifica si las celdas cambiaron (identificadas por el objetivo) y el rango A1: A10 son comunes y, si lo son, tome las medidas adecuadas.

El objeto Intersect no devuelve nada si no hay celdas comunes, por lo que Intersect (Target, Range (“A1: A10”)) Is Nothing será True si no hay celdas comunes. Agregar No a la condición hace que sea Verdadero solo si el resultado de la prueba Intersecar (objetivo, rango (“A1: A10”)) es nada es falso, en otras palabras, el objetivo y el rango A1: A10 tienen algunas celdas en común.

12345 Private Sub Worksheet_Change (ByVal Target As Range)Si no se cruza (objetivo, rango ("A1: A10")) no es nada, entonces'Toma la acción deseadaTerminara siEnd Sub

Escrito por: Vinamra Chandra

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave