Como copiar dados de uma planilha do Excel para outra usando uma fórmula

Muitos usuários do Excel enfrentam dificuldades ao tentar descobrir como mover dados de uma folha de entrada para uma folha arquivada. Embora o Excel seja uma planilha projetada para executar cálculos complexos, como tabelas de amortização de hipotecas ou rastreamento de vendas, a maioria das pessoas nunca explora suas operações mais aprofundadas.

Este FAQ irá orientá-lo sobre como qualificar e mover seus dados.

Copiando dados de uma planilha do Excel para outra com uma fórmula

Comece abrindo a guia do desenvolvedor no Excel.

Em seguida, você precisará construir o UserForm de controlador de planilha. Este UserForm permite selecionar onde os dados são movidos, para onde os dados são movidos, qual coluna deve ser inspecionada para os dados de qualificação para determinar se eles são movidos e qual deve ser o valor da entrada da coluna para movê-los.

Ao criar seu formulário de usuário, espelhe o exemplo a seguir, tomando o cuidado de nomear cada controle corretamente:

Agora que você construiu o Userform, é necessário anexar o código a cada controle. No UserForm, clique duas vezes no controle chamado CommandButton2 . O diagrama da forma de usuário não deve mais ser visível, e agora você deve ser apresentado com o explorador de código, com o bloco de código padrão. Esse bloco de código específico começa com Private Sub ComandButton2_Click () . Coloque o cursor sob a primeira linha, mas antes da linha que diz End Sub . Agora, insira o código a seguir para configurar as variáveis ​​públicas a serem aplicadas ao resto do código:

Agora, volte para o UserForm Explorer e clique duas vezes no controle marcado como CommandButton3 . Mais uma vez, o formulário de usuário é colocado de lado para o explorador de código. Coloque o cursor no bloco de código recém-criado e insira o seguinte código:

Na seção Explorer do Explorador de Projetos, clique com o botão direito do mouse em Objetos do Microsoft Excel . Selecione Inserir > Módulo .

Clique duas vezes no módulo chamado Module1 e digite as seguintes variáveis ​​públicas:

Agora, vá em frente e insira mais três folhas em sua pasta de trabalho. Agora você deve ter quatro folhas, chamadas Planilha1, Planilha2, Planilha3 e Planilha4 .

Na Folha1, coloque itens em cerca de 10-15 linhas, usando a imagem abaixo como um exemplo dos dados de teste:

Em seguida, na guia Desenvolvedor (na parte superior da pasta de trabalho), clique em Controles > Inserir > o ícone do botão :

Agora, coloque o botão em qualquer lugar na sua folha. Quando perguntar sobre macros, selecione Novo .

Você notará que colocou a nova macro no Módulo 2 do projeto. Realce o bloco de código no Módulo2, recorte-o do Módulo2 . Agora, clique duas vezes em Module1 . Quando o Code Explorer abrir, clique com o botão direito e selecione Colar . Você deve, agora, ter um bloco de código vazio que diz:

Coloque o cursor dentro do bloco de código e adicione o seguinte código:

Você notará que existe uma função chamada Buildform . Isso configura o formulário de usuário para o número apropriado de planilhas, depois de fazer o inventário deles. Para aplicar isso, coloque o seguinte código no Code Explorer, abaixo da sub-rotina Button1_Click () :

Dentro da função buildform, existe outra função chamada Counttabs . Você deve colocar este código acima do código Buildform, mas abaixo da sub-rotina Button1_click :

Se as variáveis TabFrom e TabTo estiverem definidas, você precisará executar a função createNew () . Coloque o código abaixo no Code Explorer, acima das sub-rotinas Button1_click :

Se você optou por criar uma nova planilha, altere a variável TabTo para o novo nome da planilha. Você precisará então executar a rotina LoopForMove (TabFrom, TabTo) . No Code Explorer, digite o seguinte código:

Para encontrar a última linha da sua planilha, insira o código abaixo no Code Explorer, acima de LoopForMove (FromWhatSheet, ToWhatSheet) :

Agora, você poderá mover o código real usando a função Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal) . Entre as funções LooForMove () e createNew (), coloque o seguinte código:

fantasia

Continue a percorrer cada linha na folha De, procurando entradas qualificadas, usando uma função For Loop .

Para resumir as ações de um UserForm, veja a seguinte ilustração:

Aqui está a mesma ilustração com, desta vez, com mais elementos levados em consideração:

Finalmente, aqui está o código acima mencionado em sua totalidade:

 Option Explicit

Tabulação PúblicaA partir de

TabTo público

Qualif Público como String

Public WhatCol

WhatLogic público

Public CutVal

Formulário públicoXcel

Função FindLastRow (OnWhatsheet)

FindLastRow = Células (ThisWorkbook.Worksheets (OnWhatsheet) .Rows.Count, 1) .End (xlUp) .Row

Função final

Função LoopForMove (FromWhatSheet, ToWhatSheet)

Dim LastRow, Cnt

Dim CellValue As String

Dim CellLoc

Dim nret

If WhatCol = "" Então

WhatCol = "A"

Fim se

Se Qualif = "" Então

Qualif = "X"

Fim se

ThisWorkbook.Worksheets (FromWhatSheet) .Selecione

LastRow = FindLastRow (FromWhatSheet)

Para Cnt = LastRow para 1 passo -1

CellLoc = WhatCol e Cnt

CellValue = ThisWorkbook.Worksheets (FromWhatSheet) .Range (CellLoc) .Value

Se CellValue = Qualif Então

nret = Moveit (FromWhatSheet, CellLoc, ToWhatSheet, CutVal)

Fim se

Próximo

Função final

Função Moveit (FromSheet, WhatRange, ToWhere, CutVal)

Dim MoveSheetLastRow

Com ThisWorkbook.Fichas de trabalho (FromSheet)

.Selecione

.Range (WhatRange) .EntireRow.Select

Fim com

Selection.Copy

Se CutVal = True então

Selection.Cut

Fim se

MoveSheetLastRow = FindLastRow (ToWhere)

ThisWorkbook.Worksheets (ToWhere) .Selecione

ThisWorkbook.Worksheets (ToWhere) .Cells (MoveSheetLastRow + 1, 1) .EntireRow.Select

Seleção.Inserir

ThisWorkbook.Fichas de trabalho (FromSheet) .Selecione

Application.CutCopyMode = False

Função final

Função createNew ()

Dim NewSheet

Se TabTo = "Nova Folha" Então

ThisWorkbook.Sheets.Add After: = Sheets (Sheets.Count)

NewSheet = ThisWorkbook.ActiveSheet.Name

TabTo = NewSheet

Fim se

Função final

Sub Button1_Click ()

Dim nret

buildform

Se FormXcel = False Then

Se TabFrom "" E TabTo "" Então

Crie um novo

nret = LoopForMove (TabFrom, TabTo)

Outro

MsgBox ("Por favor, defina um 'De' e um 'To' folha!")

Fim se

Fim se

End Sub

Função Counttabs ()

Counttabs = ThisWorkbook.Worksheets.Count

Função final

Função buildform ()

Dim TabCount

Controller.ComboBox2.AddItem "Nova planilha"

Para TabCount = 1 para Counttabs

Controller.ComboBox1.AddItem ThisWorkbook.Worksheets (TabCount) .Name

Controller.ComboBox2.AddItem ThisWorkbook.Worksheets (TabCount) .Name

Próximo

Controller.Show

Função final

Obrigado a ace3mark por esta dica.

Imagem: © Microsoft.

Artigo Anterior Próximo Artigo

Principais Dicas