Faça uma macro que copie uma sequência númerica de uma coluna para outra, colocando a cópia em ordem crescente.
Exercício Resolvido
Resolvendo o Problema
-
Declaramos as variáveis
Dim i As Integer
Dim j As Integer
Dim temp As Integer
-
Copiamos os dados para a coluna "C", mantendo os números originais intactos
Range("A3:A100").Copy Destination:=Range("C3:C100")
-
Definimos a área com dados, através da propriedade CurrentRegion, como o objeto Rng
Set Rng = Cells(3, 3).CurrentRegion
-
Criamos dois loops For Next um dentro do outro. Enquanto o primeiro loop está no termo i, o segundo loop irá de i + 1 até o final da lista com dados.
For i = 2 To Rng.Count
For j = i + 1 To Rng.Count
-
Com a condicional If Then determinamos que toda vez que o número do segundo loop for menor do que o do primeiro, estes números trocarão de posição
If Rng.Cells(j) < Rng.Cells(i) Then
temp = Rng.Cells(i)
Rng.Cells(i) = Rng.Cells(j)
Rng.Cells(j) = temp
End If
-
Esta lógica é seguida até o final da lista de dados, organizando toda a sequência em ordem crescente
Next j
Next i
Código Consolidado
Sub Resolucao()
Dim i As Integer
Dim j As Integer
Dim temp As Integer
Range("A3:A100").Copy Destination:=Range("C3:C100")
Set Rng = Cells(3, 3).CurrentRegion
For i = 2 To Rng.Count
For j = i + 1 To Rng.Count
If Rng.Cells(j) < Rng.Cells(i) Then
temp = Rng.Cells(i)
Rng.Cells(i) = Rng.Cells(j)
Rng.Cells(j) = temp
End If
Next j
Next i
End Sub
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE