Como copiar dados de uma planilha do Excel para outra usando uma fórmula
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:
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 ExplicitTabulaçã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.