Duvida copiar linha automatico


#1

Boa tarde.

Preciso que toda vez que numa coluna especifica tiver a palavra “Faturado”, automaticamente que sejam copiadas as informações da linha onde está o “Faturado” para outra Planilha.

Seria automatizar as informações de uma Planilha Master em Planilha Secundária, sem ter que ficar filtrando os “Faturado”, e depois copiar e colar na outra planilha .

Exemplo:

Planilha 001:

Coluna A | Coluna B | Coluna C | Coluna D | Coluna E | Coluna F

João | Filial A | Banco X | 10.000 | Faturado | Recebido

Jose | Filial A | Banco Y | 5.000 | Não faturado | Não Recebido

Pedro | Filial B | Banco X | 8.000 | Faturado | Não Recebido

Se apareceu a palavra Faturado na Coluna E da planilha 001, que seja copiada a linha toda para a Planilha 002.

Mas, como haverão vários “Não faturado”, não se pode pular linhas não Planilha 002, automaticamente a próxima linha deverá ser preenchida assim que houver um outro “Faturado”:

Planilha 002:

Coluna A Coluna B Coluna C Coluna D Coluna E Coluna F

João | Filial A | Banco X | 10.000 | Faturado | Recebido

Pedro | Filial B | Banco X | 8.000 | Faturado | Não Recebido

A linha que na Coluna E da Planilha 001 tinha um “Não Faturado”, não foi copiada.

Enquanto que as outras duas linhas que havia a palavra “Faturado”, foram copiadas, SEM pular nenhuma linha.

Alguém sabe a formula para fazer isso?


#2

Fala, @KelvinJustino. Tudo bem?

Cara, vai ser preciso criar uma rotina em macro para isso e não é tão simples de fazer. Me mande um arquivo exemplo para exlplanilhas@gmail.com que eu vou tentar criar uma rotina para isto e te mando de volta. Pode ser?


#3

Beleza, obrigado.

Te mando na parte da tarde.


#4

Fala, @KelvinJustino, beleza?

Criei uma rotina aqui, mas você vai precisar adaptar para a sua planilha:

Sub Atualizar()

Dim W           As Worksheet    'Recebe a planilha a atualizar
Dim auxiliar    As Integer      'Serve como contador

Application.ScreenUpdating = False

'Configura w como planilha a atualizar
Set W = ActiveSheet

'Processo de cópia dos dados
W.Range("A2:R100").Select
Selection.ClearContents

Sheets("Planilha Status").Select
ActiveSheet.Range("D" & auxiliar).Select
    
For auxiliar = 2 To 78

    If ActiveCell.Value = "Faturado" Then

        ActiveSheet.Range("A" & auxiliar & ":M" & auxiliar).Copy
        W.Select
        W.Range("A2").Select

        Do While ActiveCell.Value <> ""

            ActiveCell.Offset(1, 0).Select

        Loop

        Selection.PasteSpecial xlPasteValues

        Sheets("Planilha Status").Select

    End If

    ActiveCell.Offset(1, 0).Select

Next

W.Select

Application.ScreenUpdating = True

End Sub 

Neste vídeo eu explico como fazer: https://youtu.be/UNLBR12cOjQ

Abraços.


#5

Caro @KelvinJustino resolvi seu problema só usando uma fórmula, se você apreciar, basta usá-la.

Para isso você precisará utilizar duas Abas que eu nomeie-as com o nomes de DADOS e FATURADOS.

Formate-as Como Tabelas para que tanto a tabela com suas colunas fiquem nomeadas.

E mantenhas com o mesmo número de linhas.

Basta usar está fórmula matricial na Célula B3 da Aba FATURADOS:

{=SEERRO(ÍNDICE(Tb_Dados;MENOR(SE(Tb_Dados[FATURAMENTO]=“Faturado”;LIN([NR])-2);Tb_Faturados[[#Esta Linha];[NR]]);COL(B$1));"")}

Não se esqueça que para a fórmula matricial funcione você deve pressionar CTRL+SHIFT+ENTER para sair dá edição da célula.

Depois arraste está fórmula matricial para todas as células adjacentes!

Pronto!

Agora a Aba FATURADOS só terá as linhas da Aba DADOS que tiver a Coluna FATURAMENTO preenchida com o texto “Faturado”.

Espero ter ajudado!


#6

@exceldiretoaoponto bom dia.

Não compreendi muito bem pelo print, consegue enviar essa planilha em meu e-mail para eu tentar ler a formula?

kelvin_justino@hotmail.com

Att.

Kelvin.


#7

Outra coisa, vi que nos dados das planilhas você nomeou e inseriu os mesmos dados nas duas colunas. Apenas desta forma da certo a formulação?
Mantendo os mesmos dados não adianta, pois são planilhas com dados semelhantes mas não os mesmos. Quero puxar apenas a parte do faturados para outra planilha/aba e depois inserir/remover algumas colunas.

Da forma apresentada na imagem compensa apenas aplicar o filtro na coluna F para apenas faturado que da na mesma.


#8

Cara, muito bom o video.

Eu não manjo mexer muito em VBA, por isso me limita um pouco.

Tentei copiar seu codigo e deu um erro:

Sabe como resolver?


#9

Fala @KelvinJustino. Beleza?

Não consigo imaginar o motivo de não ter funcionado, mas vou te sugerir que você copie este código (recortar) e insira um módulo (no editor do VBA, menu ‘Inserir’, opção ‘Módulo’) e cole o código dentro dele.

Depois disso, com a aba de faturados ativa, tente executar a macro pelo menu de macros ou insira um botão (pode ser uma forma) e atribua a macro à ele (clique com o botão direito e selecione ‘Atribuir macro’).


#10

Olá @KelvinJustino,

Já enviei para o seu email!

Exceldiretoaoponto!


#11

olá @KelvinJustino,
Não é apenas trazendo todos os dados que a fórmula funciona…você é que decide as colunas que quer trazer!
Não nomeei os dados…todos eles vêm através da fórmula. Na planilha que te enviei, você verá!
Você não precisa remover colunas…é só não trazê-las…e se for inserir,só fará sentido se for alguma coluna que você não já tenha na aba Dados!

Espero ter ajudado!

Exceldiretoaoponto!


#12

Olá, gostaria de saber se é possível copiar uma célula de forma automática, por não saber explicar direito fiz um vídeo rápido para melhor entendimento: https://www.youtube.com/watch?v=f33Uo-CvAOU
Se puderem me ajudar eu agradeço muito.


#13

Fala, @Paulo. Tudo bom?

Seu vídeo foi removido. Mas a princípio, sempre é possível copiar uma célula automaticamente seguindo uma lógica.


#14

Xavier não consigui ver video