Fórmula no Excel para Manter Dados Mesmo Após Exclusões nas Tabelas de Origem

Anônima
2024-08-07T14:14:00+00:00

Olá a todos!

Estou trabalhando com quatro tabelas no Excel: três tabelas correspondem a diferentes turnos onde cada turno registra informações de processos, e a quarta é uma tabela principal que consolida as informações de todos os turnos. No entanto, percebi que quando uma entrada é excluída de qualquer uma das tabelas de turnos, a mesma informação também é automaticamente removida da tabela principal.

Gostaria de saber se existe uma fórmula ou método no Excel que me permita importar as informações das tabelas de turnos para a tabela principal, mas que, ao mesmo tempo, evite que as entradas na tabela principal sejam excluídas quando as correspondentes nas tabelas de turnos forem apagadas. Em outras palavras, estou procurando uma maneira de manter um registro permanente na tabela principal, mesmo que as entradas correspondentes nas tabelas de turnos sejam modificadas ou excluídas. Você poderia me ajudar com isso?

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2024-08-09T05:24:35+00:00

Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

Olá Tiago Miranda1,

Agradeço seu feedback. Se você achar minha resposta útil, clique em Sim ou Não abaixo da minha resposta, o que ajudará outros usuários que enfrentam o mesmo problema a encontrar essa resposta mais rapidamente. Isso me ajuda muito a fornecer suporte útil dentro da comunidade.

Desejando-lhe um dia agradável.

Atenciosamente

Jonathan Z - MSFT | Especialista em suporte da comunidade Microsoft

Esta resposta foi útil?

1 pessoa achou esta resposta útil.
0 comentários Sem comentários

2 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2024-08-08T14:27:12+00:00

    Obrigada pela resposta irei aplicar essa solução =D

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2024-08-08T07:43:38+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Olá Tiago Miranda1,

    Obrigado por visitar a Comunidade da Microsoft.

    Seus requisitos podem ser resumidos da seguinte forma:

    1. Quando novas linhas são adicionadas às Subtabelas 2, 3 e 4, os dados também devem ser registrados na Tabela Mestre 1.
    2. A modificação ou exclusão de dados nas subtabelas não deve afetar os dados na tabela mestre.
    3. Dados duplicados não devem ser adicionados.

    Com base na captura de tela fornecida, parece que o conteúdo na Coluna D (Turno) e na Coluna F (ID) pode identificar exclusivamente um conjunto de dados. Portanto, podemos usar essas duas colunas para determinar se os dados são duplicados.

    Aqui está o código VBA que escrevi para suas necessidades:

    Sub MergeSheetsIntoSheet1()
    
       Dim wsSource As Worksheet
    
       Dim wsTarget As Worksheet
    
       Dim lastRowSource As Long, lastRowTarget As Long
    
       Dim i As Long, j As Long
    
       Dim sheetNames() As Variant
    
       ' Set the target worksheet
    
       Set wsTarget = ThisWorkbook.Sheets("Sheet1")
    
       ' Define the source sheet names
    
       sheetNames = Array("Sheet2", "Sheet3", "Sheet4")
    
       ' Loop through each source sheet
    
       For Each wsSourceName In sheetNames
    
           Set wsSource = ThisWorkbook.Sheets(wsSourceName)
    
           ' Find the last row with data in the source sheet
    
           lastRowSource = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
    
           ' Find the last row with data in the target sheet
    
           lastRowTarget = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row
    
           ' Loop through each row in the source sheet
    
           For i = 1 To lastRowSource
    
               ' Check if the current row is not in the target sheet
    
               If Not IsRowInSheet(wsSource.Range("D" & i), wsSource.Range("F" & i), wsTarget) Then
    
                   ' Insert a new row at the end of the target sheet
    
                  lastRowTarget = lastRowTarget + 1
    
                  wsTarget.Cells(lastRowTarget, 1).EntireRow.Insert Shift:=xlDown
    
                   ' Copy the entire row from the source sheet to the target sheet
    
                  wsSource.Rows(i).Copy wsTarget.Rows(lastRowTarget)
    
               End If
    
           Next i
    
       Next wsSourceName
    
    End Sub
    
    ' Function to check if a row exists in a sheet based on D and F columns
    
    Function IsRowInSheet(dColumnValue As Range, fColumnValue As Range, ws As Worksheet) As Boolean
    
       Dim lastRow As Long
    
       Dim cell As Range
    
       lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
       For Each cell In ws.Range("D1:D" & lastRow)
    
           If cell.Value = dColumnValue.Value And ws.Range("F" & cell.Row).Value = fColumnValue.Value Then
    
              IsRowInSheet = True
    
               Exit Function
    
           End If
    
       Next cell
    
    End Function
    

    Você pode implementar isso no Excel navegando até o Developer > Visual Basic, inserindo um novo Module no lado esquerdo, colando o código lá e fechando a interface. Você pode executar a macro usando Alt+F8. Você precisará ajustar ligeiramente o código com base nos nomes específicos de suas tabelas. Se você tiver alguma dúvida, sinta-se à vontade para perguntar.

    Atenciosamente

    Jonathan Z - MSFT | Especialista em suporte da comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários