/ / Comparar Rangos en Excel VBA

Compara Rangos en Excel VBA

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:

Compara Rangos en Excel VBA

Nota: el único valor único en este ejemplo es el 3, ya que todos los demás valores aparecen 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 As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. Inicializamos el rango de objetos rangeToUse con el rango seleccionado.

Set rangeToUse = Selection

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 él o ella solo selecciona un área.

If Selection.Areas.Count <= 1 Then
      MsgBox "Please select more than one area."
Else


End If

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. Bordea cada área.

For Each singleArea In rangeToUse.Areas
    singleArea.BorderAround ColorIndex:=1, Weight:=xlThin
Next singleArea

7. El resto de este programa se ve como sigue.

For i = 1 To rangeToUse.Areas.Count
    For j = i + 1 To rangeToUse.Areas.Count
        For Each cell1 In rangeToUse.Areas(i)
            For Each cell2 In rangeToUse.Areas(j)
                If cell1.Value = cell2.Value Then
                    cell1.Interior.ColorIndex = 0
                    cell2.Interior.ColorIndex = 0
                End If
            Next cell2
        Next cell1
    Next j
Next i

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 área. Para i = 1, j = 3, Excel VBA compara todos los valores de la primera área con todos los valores de la tercera área. 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 únicos .

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

Comparar Rangos Resultado

Lea también: