Ir ao conteúdo
  • Cadastre-se

Macro Excel atribuir código a intes duplicados


Ir à solução Resolvido por Robson Cardoso,

Posts recomendados

Boa tarde galera,

Estou precisando de uma ajuda de vocês, tenho aqui no trabalho uma planilha de levantamento de materiais que é composta por código, descritivo, quantidade, preço, etc.Os materiais se repetem várias vezes e o que gostaria é o seguinte quando eu inserir um código na célula A10 por exemplo a macro procure na coluna C pelo descritivo da célula C10 e caso encontre por exemplo na C30 a célula A30 receba o mesmo código da célula A10,

 

Segue imagem e planilha planilha pra facilitar o entendimento..

 

Obrigado!!

post-756267-0-54533400-1424459877_thumb.

SOE.xls

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Robson

 

Se você tivesse em outra planilha, ou na parte não visível da mesma planilha, uma relação desse material com o código, dava para aplicar na coluna"A" as funções ÍNDICE/CORRESP para retornar esses códigos, sem necessidade de usar macros.

 

[]s

Link para o comentário
Compartilhar em outros sites

Galera consegui chegar nesse código, 

    Sub Find_Matches()    Dim CompareRange As Variant, x As Variant, y As Variant, Z As Variant    Dim iRet As Integer    Dim strPrompt As String    Dim strTitle As String     ' Promt    strPrompt = "Deseja copiar os códigos existentes?"     ' Dialog's Title    strTitle = "Copiar códigos"     'Display MessageBox    iRet = MsgBox(strPrompt, vbYesNo, strTitle)     ' Check pressed button    If iRet = vbNo Then           Else         Application.ScreenUpdating = False          Set CompareRange = Range("C10", ActiveSheet.Range("C65536").End(xlUp))     CompareRange.Select             For Each x In Selection                    If x.Offset(0, -2).Value <> "" Then                    Z = x.Offset(0, -2).Value         For Each y In CompareRange             If x = y Then y.Offset(0, -2).Select             If ActiveCell = "" Then             ActiveCell.Value = Z             End If             Next y         Else         End If     Next x     End If    End Sub    

Mas por algum motivo o primeiro código que a macro encontra ela cola ná célua C10 alguém sabe o que está errado?

 

Valeu

Link para o comentário
Compartilhar em outros sites

Experimente:

Sub ProcuraMaterial() Dim cód As Range, mat As Range, frstAddMat As String, LRa As Long, LRc As Long  LRa = Cells(Rows.Count, 1).End(xlUp).Row: LRc = Cells(Rows.Count, 3).End(xlUp).End(xlUp).Row  Set cód = Range("A22:A" & LRa).Find([A10], lookat:=xlWhole)    If Not cód Is Nothing Then      Set mat = Range("C22:C" & LRc).Find(cód.Offset(, 2).Value, lookat:=xlWhole)       If Not mat Is Nothing Then        frstAddMat = mat.Address        Do          Cells(mat.Row, 1) = [A10]           Set mat = Range("C22:C" & LRc).FindNext(mat)        Loop While Not mat Is Nothing And mat.Address <> frstAddMat       End If    Else: MsgBox "código não encontrado"    End IfEnd Sub

 

Link para o comentário
Compartilhar em outros sites

... testei esse código e nada aconteceu.

 

 

Coloque um código de produto em "A10" (conforme a sua descrição no post #1) e rode o código que postei.

 

Se não apresentar o resultado esperado sugiro que você disponibilize uma amostra do seu arquivo com o código instalado.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...
  • Solução

Consegui galera, segue o código a quem precise de algo parecido;

   Sub Find_Matches()    Dim CompareRange As Variant, x As Variant, y As Variant, Z As Variant    Dim iRet As Integer    Dim strPrompt As String    Dim strTitle As String     ' Promt    strPrompt = "Deseja copiar os códigos existentes?"     ' Dialog's Title    strTitle = "Copiar códigos"     'Display MessageBox    iRet = MsgBox(strPrompt, vbYesNo, strTitle)     ' Check pressed button    If iRet = vbNo Then         Else         Application.ScreenUpdating = False          Set CompareRange = Range("C7", ActiveSheet.Range("C65536").End(xlUp))     CompareRange.Select             For Each x In Selection                    If x.Offset(0, -2).Value <> "" Then                    Z = x.Offset(0, -2).Value         For Each y In CompareRange             If x = y Then y.Offset(0, -2).Select             If ActiveCell = "" Then             ActiveCell.Value = Z             End If             Next y         Else         End If     Next x     End If    End Sub

Caso alguém tenha alguma sugestão podem falar

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!