VBA
Olá pessoal bom dia a todos do vbmania, gostaria de uma ajuda de vcs. Estou criando uma planilha em excel 2003, onde tenho na Plna1 celula A1 uma relação de contatos que pode chegar até 5000 contratos, é na Plan2 tbm a mesma quantidade de contratos, gostaria de fazer o seguinte checar todos os contratos da plan2 e comparar com os da Pla1. E verificasse existe duplicidade de contratos se existir mostrar algo na celular B1 na Plan1.
Agradeço.
Agradeço.
usa PROCV
OK MARCOSLING, Jà USEI O PROCV, MAIS COMO SE TRATA DE MUITO CONTRATOS O MICRO TRAVA. POR ISSO GOSTARIA DE SABER SE TINHA COMO DAZER VIA PROGRAMAÇÃO.
AGRADEÇO.
AGRADEÇO.
Vc poderia fazer um laço com for next ou do while, mas não sei te dizer se ficaria mais rápido do que o procv.
Ao meu ver, a maneira mais rápida seria através de tabelas do access.
Esses dados não poderiam estar num banco de dados, ao invés do excel?
Ao meu ver, a maneira mais rápida seria através de tabelas do access.
Esses dados não poderiam estar num banco de dados, ao invés do excel?
MARCOSLING, ESSES CONTRAROS AGENTE Jà RECEBE EM PLANILHAS, SO QUANDO CHEGA PRECISAMOS FAZER ALGUNS REAJUSTE PARA LIBERAÇÃO.
AGRADEÇO SUA ATENÇÃO
AGRADEÇO SUA ATENÇÃO
Alguem
Você já tentou usar um [Ô]for next[Ô] ou um [Ô]do while[Ô] para ver roda mais rápido
MARCOSLING, VOCÊ PODERIA MIM UM EXEMPLO USANDO For Next ou While. Facarei muito agradecido.
Esse primeiro exemplo, verefica a digitação na coluna A1 da planilha, se houver na digitação um numero repetido, alerta.
Option Explicit
[ô]Objetivo : Verificar valores duplicados
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim nLinComp, nLinFim As Integer [ô] Declara nLinha com Inteiro
If ActiveCell.Column = 1 Then [ô] só funciona na coluna 1
nLinFim = 1 [ô] Define qual é linha onde inicia-se os dados para achar i final da lista
Do While Not IsEmpty(Cells(nLinFim, 1)) [ô] Faça enquanto não for vazia as células de valores informado
nLinFim = nLinFim + 1 [ô] Incrementa uma linha para baixo
Loop [ô] Faz o Loop
nLinComp = 1 [ô]Define qual é linha que inicia-se os dados para comparação
Do While nLinComp <= nLinFim - 2 [ô] Faça enquanto conter valores informado
If Cells(nLinFim - 1, 1).Value = Cells(nLinComp, 1).Value Then [ô] Caso o último valores informado for igual ao valores em comparação então...
MsgBox [Ô]valores duplicado[Ô], vbCritical, [Ô]Cadastro valores ![Ô] [ô]Exibe uma mensagem
Cells(nLinFim - 1, 1).Activate [ô]Ativa o valores em duplicidade
Cells(nLinFim - 1, 1).Interior.ColorIndex = 4 [ô] Formata o interior da célula em verde
Exit Sub [ô] Finaliza Código
Else [ô] Senão
nLinComp = nLinComp + 1 [ô] Vai para o próximo valores da lista
End If [ô] Finaliza IF
Loop [ô] Faz o Ciclo
Cells(nLinComp + 1, 1).Activate [ô] Não achando duplicidade, ativa a próxima célula
If nLinFim > 1 Then Cells(nLinFim - 1, 1).Interior.ColorIndex = xlNone [ô] Retira o formato do interior da célula em verde, caso conter
If nLinFim > 1 Then Cells(nLinFim, 1).Interior.ColorIndex = xlNone [ô] Retira o formato do interior da célula em verde, caso conter
End If
End Sub [ô] Encerra o código
Esse segundo exemplo, se vc digitar uma data na coluna A da planilha 01 e se a data existir na coluna 01 da planilha 02 copia para coluna A da planilha 03:
Sub CopiarDados()
Dim ÚltimaLinha1, ÚltimaLinha2, Cont, MinhaData
ÚltimaLinha1 = Plan2.Range([Ô]A65000[Ô]).End(xlUp).Row
MinhaData = CDate(Plan1.Range([Ô]A1[Ô]))
For Cont = 2 To ÚltimaLinha1
ÚltimaLinha2 = Plan3.Range([Ô]A65000[Ô]).End(xlUp).Row + 1
If ÚltimaLinha2 = 1 Then ÚltimaLinha2 = 2
If Plan2.Range([Ô]A[Ô] & Cont) = MinhaData Then
Plan3.Range([Ô]A[Ô] & ÚltimaLinha2) = Plan2.Range([Ô]A[Ô] & Cont)
End If
Next
End Sub
Veja se um desses exemplos pode te ajudar.
Option Explicit
[ô]Objetivo : Verificar valores duplicados
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim nLinComp, nLinFim As Integer [ô] Declara nLinha com Inteiro
If ActiveCell.Column = 1 Then [ô] só funciona na coluna 1
nLinFim = 1 [ô] Define qual é linha onde inicia-se os dados para achar i final da lista
Do While Not IsEmpty(Cells(nLinFim, 1)) [ô] Faça enquanto não for vazia as células de valores informado
nLinFim = nLinFim + 1 [ô] Incrementa uma linha para baixo
Loop [ô] Faz o Loop
nLinComp = 1 [ô]Define qual é linha que inicia-se os dados para comparação
Do While nLinComp <= nLinFim - 2 [ô] Faça enquanto conter valores informado
If Cells(nLinFim - 1, 1).Value = Cells(nLinComp, 1).Value Then [ô] Caso o último valores informado for igual ao valores em comparação então...
MsgBox [Ô]valores duplicado[Ô], vbCritical, [Ô]Cadastro valores ![Ô] [ô]Exibe uma mensagem
Cells(nLinFim - 1, 1).Activate [ô]Ativa o valores em duplicidade
Cells(nLinFim - 1, 1).Interior.ColorIndex = 4 [ô] Formata o interior da célula em verde
Exit Sub [ô] Finaliza Código
Else [ô] Senão
nLinComp = nLinComp + 1 [ô] Vai para o próximo valores da lista
End If [ô] Finaliza IF
Loop [ô] Faz o Ciclo
Cells(nLinComp + 1, 1).Activate [ô] Não achando duplicidade, ativa a próxima célula
If nLinFim > 1 Then Cells(nLinFim - 1, 1).Interior.ColorIndex = xlNone [ô] Retira o formato do interior da célula em verde, caso conter
If nLinFim > 1 Then Cells(nLinFim, 1).Interior.ColorIndex = xlNone [ô] Retira o formato do interior da célula em verde, caso conter
End If
End Sub [ô] Encerra o código
Esse segundo exemplo, se vc digitar uma data na coluna A da planilha 01 e se a data existir na coluna 01 da planilha 02 copia para coluna A da planilha 03:
Sub CopiarDados()
Dim ÚltimaLinha1, ÚltimaLinha2, Cont, MinhaData
ÚltimaLinha1 = Plan2.Range([Ô]A65000[Ô]).End(xlUp).Row
MinhaData = CDate(Plan1.Range([Ô]A1[Ô]))
For Cont = 2 To ÚltimaLinha1
ÚltimaLinha2 = Plan3.Range([Ô]A65000[Ô]).End(xlUp).Row + 1
If ÚltimaLinha2 = 1 Then ÚltimaLinha2 = 2
If Plan2.Range([Ô]A[Ô] & Cont) = MinhaData Then
Plan3.Range([Ô]A[Ô] & ÚltimaLinha2) = Plan2.Range([Ô]A[Ô] & Cont)
End If
Next
End Sub
Veja se um desses exemplos pode te ajudar.
Tópico encerrado , respostas não são mais permitidas