Compare Ranges in Excel VBA - Easy Excel Macros

Índice

Abaixo, veremos um programa em Excel VBA que compara selecionado aleatoriamente gamas e destaca células que são únicas. Se você ainda não está familiarizado com as áreas, recomendamos que leia este exemplo primeiro.

Situação:

Nota: o único valor único neste exemplo é o 3, uma vez que todos os outros valores ocorrem em pelo menos mais uma área. Para selecionar Intervalo ("B2: B7, D3: E6, D8: E9"), mantenha pressionada a tecla Ctrl e selecione cada área.

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

1. Primeiro, declaramos quatro objetos Range e duas variáveis ​​do tipo Integer.

Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. Inicializamos o objeto Range rangeToUse com o range selecionado.

Definir rangeToUse = Seleção

3. Adicione a linha que altera a cor de fundo de todas as células para 'Sem preenchimento'. Adicione também a linha que remove as bordas de todas as células.

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

4. Informe o usuário quando ele selecionar apenas uma área.

If Selection.Areas.Count <= 1 Then
MsgBox "Selecione mais de uma área."
Outro
Fim se

As próximas linhas de código (em 5, 6 e 7) devem ser adicionadas entre Else e End If.

5. Pinte as células das áreas selecionadas.

rangeToUse.Interior.ColorIndex = 38

6. Limite cada área.

Para Cada SingleArea In rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Peso: = xlThin
Next singleArea

7. O resto deste programa tem a seguinte aparência.

Para i = 1 para rangeToUse.Areas.Count
Para j = i + 1 para rangeToUse.Areas.Count
Para Cada célula1 Em rangeToUse.Areas (i)
Para Cada célula2 Em rangeToUse.Areas (j)
Se cell1.Value = cell2.Value Then
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Fim se
Próxima célula 2
Próxima célula1
Próximo j
Proximo eu

Explicação: isso pode parecer um pouco opressor, mas não é tão difícil. rangeToUse.Areas.Count é igual a 3, então as duas primeiras linhas de código reduzem para For i = 1 a 3 e For j = i + 1 a 3. Para i = 1, j = 2, o Excel VBA compara todos os valores da primeira área com todos os valores da segunda área. Para i = 1, j = 3, o Excel VBA compara todos os valores da primeira área com todos os valores da terceira área. Para i = 2, j = 3, o Excel VBA compara todos os valores da segunda área com todos os valores da terceira área. Se os valores forem iguais, ele define a cor de fundo de ambas as células como 'Sem preenchimento', porque elas não são exclusivas.

Resultado quando você clica no botão de comando na planilha:

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave