Ir para conteúdo
Fórum Script Brasil
  • 0

VBA que procura célula para colar valor


aninha_27

Pergunta

Olá!

Tenho um relatório em que o número de linhas irá variar, preciso fazer um somatório da coluna AO, depois verificar nas colunas D e E o código do produto e com base nesse código colar o valor da soma em outra aba na linha correspondente a este código. Por exemplo, se na coluna D está R1 e na coluna E está o código 69, na aba em que o valor da soma será colado, a macro deve procurar a linha que contém esses códigos e colar o valor na coluna P, na outra aba esses códigos devem ser procurados nas colunas C e D.

Já fiz o código cravando a célula, mas desse jeito não me atende...

    Range("AO2").Select
    Dim DLin As Long
    DLin = Range("AO2").End(xlDown).Row + 1
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-1335]C:R[-2]C)"
    Selection.Copy
    Windows("Sugestão_01.xlsx").Activate
    Range("P3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

 

Por gentileza, alguém pode ajudar?

Desde já obrigada!

Editado por aninha_27
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
2 minutos atrás, Erik Wesley disse:

Você pode fazer um loop.

Ex:


Do
If ActiveCell.Value <> "Valor Procurado" Then
ActiveCell.Offset(1,0).Select
End If
Loop Until ActiveCell.Value = "Valor Procurado"

 

O problema é que em outras colunas pode ter esse 69, então não posso especificar o número, preciso que a macro consulte a coluna E e com base no valor que está lá pegue o valor da soma da coluna AO e cole o valor da soma em outra aba na linha correspondente a este código.

Link para o comentário
Compartilhar em outros sites

  • 0
12 minutos atrás, aninha_27 disse:

O problema é que em outras colunas pode ter esse 69, então não posso especificar o número, preciso que a macro consulte a coluna E e com base no valor que está lá pegue o valor da soma da coluna AO e cole o valor da soma em outra aba na linha correspondente a este código.

É a mesma coisa, só que maior...

Se tiver como postar sua planilha será mais fácil (Ou um exemplo do que quer).

Link para o comentário
Compartilhar em outros sites

  • 0

    Sub FILTRO()
'
' FILTRO Macro
'

'

    Application.ScreenUpdating = False
    Workbooks.Open Filename:="H:\Desktop.Janeiro2018.xlsx"
    
'Aplica Texto para colunas
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
        
'Deleta algumas linhas
    Rows("1:9").Select
    Selection.Delete Shift:=xlUp
    Application.Goto Reference:="R2C47"
    Rows("1:1").Select
    
'Aplica o filtro
    Range("AB1").Activate
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$AV$1335").AutoFilter Field:=48, Criteria1:= _
        "=Aguardando retorno da prefeitura", Operator:=xlOr, Criteria2:= _
        "=Escriturada/Liberada pela prefeitura"
    'ActiveSheet.Range("$A$1:$AW$1335").AutoFilter Field:=47, Criteria1:="=60", _
        Operator:=xlOr, Criteria2:="=80"

'Efetua as fórmulas de soma e contagem e copia os dados na planilha destino
'Valor Base de Cálculo
    Range("AO2").Select
    Dim DLin As Long
    DLin = Range("AO2").End(xlDown).Row + 1
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-1335]C:R[-2]C)"
    Selection.Copy
    Windows("Sugestão_01.xlsx").Activate
    Range("P3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
'Valor ISS Prefeitura
    Windows("TESTE FILTRO.xlsm").Activate
    Range("AP2").Select
    DLin = Range("AP2").End(xlDown).Row + 1
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-1335]C:R[-2]C)"
    Selection.Copy
    Windows("Sugestão_01.xlsx").Activate
    Range("V3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
'Número de NFs
    Windows("TESTE FILTRO.xlsm").Activate
    Range("AN2").Select
    DLin = Range("AN2").End(xlDown).Row + 1
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=COUNT(R[-1335]C[1]:R[-2]C[1])"
    Selection.Copy
    Windows("Sugestão_01.xlsx").Activate
    Range("V3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
    
End Sub

 

Essa é minha macro. Eu pensei que cravando a linha estaria resolvido meu problema, mas não está! 😞

A macro deve fazer o somatório da coluna AO, pesquisar as colunas D (R1) e E (69), abrir a planilha Sugestão_01, se encontrar os mesmos valores na colunas C e D, ou seja, R1 e 69, deve colar a soma na coluna P.

 

Editado por aninha_27
Link para o comentário
Compartilhar em outros sites

  • 0
17 minutos atrás, aninha_27 disse:

    Sub FILTRO()
'
' FILTRO Macro
'

'

    Application.ScreenUpdating = False
    Workbooks.Open Filename:="H:\Desktop.Janeiro2018.xlsx"
    
'Aplica Texto para colunas
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
        
'Deleta algumas linhas
    Rows("1:9").Select
    Selection.Delete Shift:=xlUp
    Application.Goto Reference:="R2C47"
    Rows("1:1").Select
    
'Aplica o filtro
    Range("AB1").Activate
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$AV$1335").AutoFilter Field:=48, Criteria1:= _
        "=Aguardando retorno da prefeitura", Operator:=xlOr, Criteria2:= _
        "=Escriturada/Liberada pela prefeitura"
    'ActiveSheet.Range("$A$1:$AW$1335").AutoFilter Field:=47, Criteria1:="=60", _
        Operator:=xlOr, Criteria2:="=80"

'Efetua as fórmulas de soma e contagem e copia os dados na planilha destino
'Valor Base de Cálculo
    Range("AO2").Select
    Dim DLin As Long
    DLin = Range("AO2").End(xlDown).Row + 1
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-1335]C:R[-2]C)"
    Selection.Copy
    Windows("Sugestão_01.xlsx").Activate
    Range("P3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
'Valor ISS Prefeitura
    Windows("TESTE FILTRO.xlsm").Activate
    Range("AP2").Select
    DLin = Range("AP2").End(xlDown).Row + 1
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-1335]C:R[-2]C)"
    Selection.Copy
    Windows("Sugestão_01.xlsx").Activate
    Range("V3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
'Número de NFs
    Windows("TESTE FILTRO.xlsm").Activate
    Range("AN2").Select
    DLin = Range("AN2").End(xlDown).Row + 1
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=COUNT(R[-1335]C[1]:R[-2]C[1])"
    Selection.Copy
    Windows("Sugestão_01.xlsx").Activate
    Range("V3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
    
End Sub

 

Essa é minha macro. Eu pensei que cravando a linha estaria resolvido meu problema, mas não está! 😞

A macro deve fazer o somatório da coluna AO, pesquisar as colunas D (R1) e E (69), abrir a planilha Sugestão_01, se encontrar os mesmos valores na colunas C e D, ou seja, R1 e 69, deve colar a soma na coluna P.

 

 

Coloque uma copia da planilha e não o código. Pode ser tudo em branco mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0
6 minutos atrás, aninha_27 disse:

Agora sim, tudo faz sentido!!!!!

Na planilha "TESTE FILTRO" há uma coluna com o nome "Valor Liquido", você precisa que ele some esses valores e cole na planilha "Sugestão_01", e se os valores já estiverem preenchidos você quer que ele cole os dados na coluna "BASE DE CALCULO". Só isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Na planilha "TESTE FILTRO" quero que ele some os valores da coluna AO (Valor líquido), para saber em qual linha da planilha "SUGESTÃO_01" ele vai colar na coluna P (Base de cálculo), para isso ele precisa verificar o código que está nas colunas D e E da planilha "TESTE FILTRO", se esses códigos forem os mesmos das colunas C e D da planilha "SUGESTÃO_01", ele vai colar o valor da soma na coluna P.

Link para o comentário
Compartilhar em outros sites

  • 0
14 minutos atrás, aninha_27 disse:

Na planilha "TESTE FILTRO" quero que ele some os valores da coluna AO (Valor líquido), para saber em qual linha da planilha "SUGESTÃO_01" ele vai colar na coluna P (Base de cálculo), para isso ele precisa verificar o código que está nas colunas D e E da planilha "TESTE FILTRO", se esses códigos forem os mesmos das colunas C e D da planilha "SUGESTÃO_01", ele vai colar o valor da soma na coluna P.

Entendi. Ele tem que achar a referencia na coluna D e E para colar (Na mesma linha/direção) o valor na coluna P.

Link para o comentário
Compartilhar em outros sites

  • 0

Ele tem que achar a referência nas colunas D e E da planilha "TESTE FILTRO"  para colar na linha que tiver a mesma referência nas colunas C e D da planilha "SUGESTÃO_01". Lembrando que se o código 69 estiver na linha 1, não significa que ele estará na linha 1 na outra planilha, entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0
18 minutos atrás, aninha_27 disse:

Ele tem que achar a referência nas colunas D e E da planilha "TESTE FILTRO"  para colar na linha que tiver a mesma referência nas colunas C e D da planilha "SUGESTÃO_01". Lembrando que se o código 69 estiver na linha 1, não significa que ele estará na linha 1 na outra planilha, entendeu?

 

Sim! Só aguardar que já dou um jeito.

 

 

PS: Você tem quer somar toda a coluna AO? 

23 minutos atrás, aninha_27 disse:

Ele tem que achar a referência nas colunas D e E da planilha "TESTE FILTRO"  para colar na linha que tiver a mesma referência nas colunas C e D da planilha "SUGESTÃO_01". Lembrando que se o código 69 estiver na linha 1, não significa que ele estará na linha 1 na outra planilha, entendeu?

Você quer achar sempre esta mesma referencia no mesmo local?

Editado por Erik Wesley
Falta de Informação
Link para o comentário
Compartilhar em outros sites

  • 0

Fiz da seguinte maneira: 

' Referencias
Dim Ref As String
Dim Ref2 As String
Dim Ref3 As String

' Setar Referencias
Range("D2").Select
Ref2 = ActiveCell.Value

Range("E2").Select
Ref3 = ActiveCell.Value

Range("AO2").Select
Ref = ActiveCell.Value

' Abrir SUGESTÃO
Windows("Sugestão_01.xlsx").Activate
Range("c2").Select

'Busca as referencias na planilha SUGESTÃO
Do
Do
If ActiveCell.Value <> Ref2 Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell.Value = Ref2
ActiveCell.Offset(0, 1).Select
If ActiveCell.Value <> Ref3 Then
ActiveCell.Offset(0, -1).Select
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell.Value = Ref3

'Caso encontre
ActiveCell.Offset(0, 12).Select
ActiveCell.Value = Ref

 

Link para o comentário
Compartilhar em outros sites

  • 0
2 horas atrás, aninha_27 disse:

Não achou a linha correta, ele vai "andando" até o final  das linhas...

Será que é porque existem outras R1 na coluna C? A macro tem que achar R1 na coluna C e 69 na coluna D... tem que ser as duas informações...

 

 

Onde você colocou o código? Manda pra mim novamente a planilha depois que você colocou o código, vou usar como base pra resolver.

Link para o comentário
Compartilhar em outros sites

  • 0
2 horas atrás, aninha_27 disse:

Bom dia Erik! Tudo bem?

Desculpe a insistência... você consegue me ajudar na minha macro?

  •  

Acabei de testar ela, ta funcionando!

Ele consegue encontrar os valores na planilha Sugestão. 

Aqui um exemplo:

Sub Buscar()
Dim C As String
Dim D As String
C = "R1"
D = "69"

Range("C3").Select
Do
Do
If ActiveCell.Value <> C Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell.Value = C
ActiveCell.Offset(0, 1).Select
If ActiveCell.Value <> D Then
ActiveCell.Offset(1, -1).Select
End If
Loop Until ActiveCell.Value = D

MsgBox "Encontrados"


End Sub

Pode colocar na sua planilha Sugestão para ver como está funcionando corretamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Desse jeito funciona, porém não dá para ficar escrevendo o código...

Da primeira vez que você enviou você não escrevia código, mas ele passa da linha correta, por exemplo coluna C = R1e coluna D = 69

Está desse jeito na minha planilha...

 

' Referencias
Dim Ref As String
Dim Ref2 As String
Dim Ref3 As String

'Setar Referencias
Range("D2").Select
Ref2 = ActiveCell.Value

Range("E2").Select
Ref3 = ActiveCell.Value

Range("AO2").Select
Dim DLin As Long
DLin = Range("AO2").End(xlDown).Row + 1
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-1335]C:R[-2]C)"
Selection.Copy
Ref = ActiveCell.Value

'Abrir Planilha Sugestão_01
Windows("Sugestão_01.xlsx").Activate
Range("C2").Select

'Busca as referencias na planilha SUGESTÃO
Do
Do
If ActiveCell.Value <> Ref2 Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell.Value = Ref2
ActiveCell.Offset(0, 1).Select
If ActiveCell.Value <> Ref3 Then
ActiveCell.Offset(1, -1).Select
End If
Loop Until ActiveCell.Value = Ref3

'Caso encontre
ActiveCell.Offset(0, 12).Select
ActiveCell.Value = Ref

Link para o comentário
Compartilhar em outros sites

  • 0
52 minutos atrás, aninha_27 disse:

Percebi que desse jeito que você disse que funciona, quando ele acha o código R1 na coluna C ele verifica se na coluna D tem o código 69, mas do outro jeito que você passou, ele fica procurando só na coluna C

Talvez falte referenciar melhor. Eu não consigo utilizar o código direto na sua planilha pois ele requer outros arquivos. Então você terá que fazer as alterações por contra própria com base nos códigos que lhe passei.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...