Excel planilhha vba compara copia nao duplicados ordena e lista não comuns
Qua, 16 de Fevereiro de 2011 15:34
Expedito Marcondes
Saberexcel - o site das macros
Essa macro e função do Aplicativo Microsoft Excel VBA(Visual Basic Application), copia determinados dados, e insere em determinado local, sem duplicados e ordem crescente, logo em seguida, compara dados em comum com a relação na coluna anterior e faz uma lista na coluna(A) dos dados que não estao em comum, isto é, dados em comum não entra na lista para impressão.
Explicando melhor ....1-) A macro copia a lista na coluna BA, classificar sem duplicados "Ok...., veja "2-) Após editar o arquivo (clicando em um botão), cópia da lista na coluna BB, tipo sem duplicados e em ordem crescente.
2b-) Depois compare a lista de coluna da coluna BA e BB, se um nome de coluna BA não está mais na lista de coluna de Pesquisa com o
Col(BB) (Por favor preencha o Lista de "Dados" dos ítens na coluna Dados ) + Copy o ÍTEM na folha de Auxiliar celula(B7) B7 e imprimir a folha, então a mensagem " ítem avaliado enviado para lista de impressão, com certeza o ítem foi separado para impressão imprido.
Se vários nomes já não estão na lista da coluna BB, repito: verificação com (Por favor preencha a lista de "Palavras" DADOS ) a macro copiará para a folha de Auxiliar celula (B7) a cada interação do loop, e também poderá jogar para impressão, e também faz uma relação dos ítens não comuns na célula A8 em diante. Observe que ao executar a macro, código vai copiando para as colunas ajdcentes à Coluna BB, os codigos estarão sempre verificando com a ultima linha copiada. e também para a área de impressão dos ítens(palavras, nomes) os ítens não comuns, em seguida, mensagem de "verificação do ítem "Palavra " foi impresso(se optar por imprimir.....)...
3) Suponhamos que sua lista fosse mudada a cada semana ou diariamente, e gostaria de manter o histórico, veja o que o macro faz, copia novamente a cada execução para coluna seguinte e, e faz a análise com os dados da coluna(C), ao executar o macro irá copiar os dados para coluna seguinte e ser comprarada novamente, verificará a coluna BB e BC, se uma coluna de nome já não na lista BB coluna BC, emitirá a mensagem e vai inserir na lista de avaliados , isto é, (Preencherá o a lista de avaliados com os nomes em comuns ) , também a cada volta do loop, insere na folha de planilha Auxiliar, uma vez, o ítem em comum, e será emitida a mensagem que também será enviada para a uma lista especial, neste caso vai para impressão, .....
Observe que o código estará enviando a mensagem para dois locais, deixei assim com intutito didático. ok....e assim por diante, checa as colunas e dados a cada modidificação.... (baixe o exemplo de planilha no final da planilha)
Espero que o exemplo lhes seja útil - Fiquem com Deus, Expedito Marcondes
MACRO COPIA DADOS NÃO DUPLICADOS, ORDENA, COMPARA DADOS E MONTA LISTA DE NÃO COMUNS
Sub Copiar_dados_em_comum()
Dim vUltimaLinColC As Long, vUltimaLinOrdem As Long, vUltimaColLin As Integer
Dim vUltimaLin1 As Long, vUltimaLin2 As Long, vLinha As Long, Rng As Range
Dim vProcura As String
'o que faremos na planilha principal, usa o with para não ficar repetindo o nome da planilha
With Sheets("Principal")
[A8].Select
' localizar última linha da coluna C
vUltimaLinColC = .Range("C" & Rows.Count).End(xlUp).Row
' ultima coluna usada na linha 1
vUltimaColLin = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
' Se esta coluna for <= 53 ª a 53 ª seguida
If vUltimaColLin < 52 Then vUltimaColLin = 53
' Copiar com filtro avançado
.Range("C5:C" & vUltimaLinColC).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=.Cells(1, vUltimaColLin), Unique:=True
' ultima linha para classificação em ordem
vUltimaLinOrdem = .Cells(Rows.Count, vUltimaColLin).End(xlUp).Row
'Classificar a coluna Atual
.Range(.Cells(1, vUltimaColLin), .Cells(vUltimaLinOrdem, vUltimaColLin)).Sort Key1:=.Cells(1, vUltimaColLin), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
' Se somente a coluna BA estiver cheia, exit sub
If vUltimaColLin = 53 Then Exit Sub
' Caso contrário compare as duas colunas
vUltimaLin1 = .Cells(Rows.Count, vUltimaColLin - 1).End(xlUp).Row
vUltimaLin2 = .Cells(Rows.Count, vUltimaColLin).End(xlUp).Row
' Definir O local de busca na segunda coluna
Set Rng = .Range(.Cells(1, vUltimaColLin), .Cells(vUltimaLin2, vUltimaColLin))
' para cada linha na primeira coluna
For vLinha = 1 To vUltimaLin1
' Recuperar o nome da coluna antes da última
vProcura = .Cells(vLinha, vUltimaColLin - 1).Value
' Procurar o nome na coluna ao lado
'
If vProcuraLinha(Sheets("Principal"), Rng, vProcura) = 0 Then
MsgBox "Atenção será preenchida a Lista do ítem ...: [ " & vProcura & " ]", vbInformation, "Saberexcel" '1
ActiveCell.Value = vProcura
ActiveCell.Offset(1, 0).Value = vProcura
ActiveCell.Offset(1, 0).Select
Sheets("Auxiliar").Range("B7").Value = vProcura
'Sheets("Auxiliar").PrintOut 'desabilitei senão vai jogar cada volta na fila de impressão...
'aqui no caso poderá imprimir a lista de não comuns
MsgBox "Ítem enviado para Lista de avaliação - ítem...: [ " & vProcura & " ] e também para impressão", vbInformation, "Saberexcel" '2
End If
Next vLinha
End With
Set Rng = Nothing
End Sub
'Função para busca e localização, simples, para fazer uma função voce poderá usar o recurso
'do proprio aplicativo, o que ensino na lição 1 do nosso curso, como trabalhar com o GM
Function vProcuraLinha(Sht As Worksheet, Rng As Range, Localiza As String)
On Error Resume Next
vProcuraLinha = 0
With Sht
With Rng
vProcuraLinha = .Find(What:=Localiza, LookIn:=xlValues, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
SearchFormat:=False).Row
End With
End With
End Function
Aprenda tudo sobre o Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Saberexcel
Baixe o exemplo de planilha contendo as macros e função acima
Excel planilha vba compara copia nao duplicados ordena nao comuns (41.85 KB)
Última atualização em Qua, 10 de Agosto de 2011 08:22
Adicionar comentário