Comparar rangos en Excel VBA - Macros fáciles de Excel

Tabla de contenido

A continuación, veremos un programa en Excel VBA ese compara seleccionado aleatoriamente rangos y resalta las celdas que son únicas. Si aún no está familiarizado con las áreas, le recomendamos que lea este ejemplo primero.

Situación:

Nota: el único valor único en este ejemplo es el 3 ya que todos los demás valores ocurren en al menos un área más. Para seleccionar Rango ("B2: B7, D3: E6, D8: E9"), mantenga presionada la tecla Ctrl y seleccione cada área.

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

1. Primero, declaramos cuatro objetos Range y dos variables de tipo Integer.

Dim rangeToUse como rango, singleArea como rango, celda1 como rango, celda2 como rango, i como entero, j como entero

2. Inicializamos el objeto Range rangeToUse con el rango seleccionado.

Establecer rangeToUse = Selección

3. Agregue la línea que cambia el color de fondo de todas las celdas a 'Sin relleno'. También agregue la línea que elimina los bordes de todas las celdas.

Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone

4. Informar al usuario cuando solo seleccione un área.

Si Selection.Areas.Count <= 1 Entonces
MsgBox "Seleccione más de un área".
Demás
Terminara si

Las siguientes líneas de código (en 5, 6 y 7) deben agregarse entre Else y End If.

5. Colorea las celdas de las áreas seleccionadas.

rangeToUse.Interior.ColorIndex = 38

6. Borde cada área.

Para cada área individual en rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Peso: = xlThin
Siguiente singleArea

7. El resto de este programa tiene el siguiente aspecto.

Para i = 1 Para rangeToUse.Areas.Count
Para j = i + 1 Para rangeToUse.Areas.Count
Para cada celda1 en rangeToUse.Areas (i)
Para cada celda2 en rangeToUse.Areas (j)
Si cell1.Value = cell2.Value Entonces
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Terminara si
Siguiente celda2
Siguiente celda 1
Siguiente j
Siguiente yo

Explicación: esto puede parecer un poco abrumador, pero no es tan difícil. rangeToUse.Areas.Count es igual a 3, por lo que las dos primeras líneas de código se reducen a For i = 1 a 3 y For j = i + 1 a 3. Para i = 1, j = 2, Excel VBA compara todos los valores de la primera área con todos los valores de la segunda zona. Para i = 1, j = 3, Excel VBA compara todos los valores de la primera área con todos los valores de la tercera área. Para i = 2, j = 3, Excel VBA compara todos los valores de la segunda área con todos los valores de la tercera área. Si los valores son los mismos, establece el color de fondo de ambas celdas en 'Sin relleno', porque no son únicas.

Resultado al hacer clic en el botón de comando en la hoja:

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

wave wave wave wave wave