A continuación veremos un programa en Excel VBA que compara rangos seleccionados al azar y resalta las celdas que son únicas. Si aún no estás familiarizado con las áreas, te recomendamos encarecidamente que leas este ejemplo primero.
Situación:
Nota: el único valor único en este ejemplo es el 3, ya que todos los demás valores se dan 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.
Coloca un botón de comando en tu hoja de trabajo y añade las siguientes líneas de código:
1. Primero, declaramos cuatro objetos Range y dos variables de tipo Integer.
Dim rangeUsar como rango, singleArea como rango, cell1 como rango, cell2 como rango, i como entero, j como entero
2. Iniciamos el rango de objetos de la gamaToUse con el rango seleccionado.
Establecer el rangoToUse = Selección
3. Añade la línea que cambia el color de fondo de todas las celdas a «Sin relleno». También añade la línea que elimina los bordes de todas las celdas.
Células.Interior.ColorIndex = 0 Células.Bordes.LíneaEstilo = xlNinguna
4. Informar al usuario cuando sólo seleccione un área.
Si el recuento de las áreas de selección es de 1, entonces MsgBox «Por favor, seleccione más de un área». Else Finalizar si
Las siguientes líneas de código (en 5, 6 y 7) deben ser añadidas entre Else y End If.
5. Colorear las celdas de las áreas seleccionadas.
rangeToUse.Interior.ColorIndex = 38
6. Bordea cada área.
Para cada una de las áreas en el rango de las áreas de uso SingleArea.BorderAround ColorIndex:=1, Weight:=xlThin Próximo singleArea
7. El resto del programa se ve como sigue.
Para i = 1 Para el rango de uso de las áreas de conteo. Para j = i + 1 Para el rango de conteo de áreas de uso. Para cada celda1 en el rango de las áreas de uso (i) Para cada celda2 en el rango de las áreas de uso (j) Si la celda 1.Valor = celda 2.Valor entonces cell1.Interior.ColorIndex = 0 cell2.Interior.ColorIndex = 0 Finalizar si Próxima celda2 Próxima célula1 Siguiente j Siguiente…
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, el Excel VBA compara todos los valores de la primera área con todos los valores de la segunda área. Para i = 1, j = 3, el Excel VBA compara todos los valores de la primera área con todos los valores de la tercera área. Para i = 2, j = 3, el 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 cuando se hace clic en el botón de comando de la hoja: