Excel planilhha vba compara copia nao duplicados ordena e lista não comuns

Qua, 16 de Fevereiro de 2011 15:34 Expedito Marcondes
Imprimir
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)
Tags:
Última atualização em Qua, 10 de Agosto de 2011 08:22