Copie a planilha do Excel e mantenha a referência de célula relativa em fórmulas

30

Outro problema de cópia no Excel:

Como posso copiar uma planilha do WorkbookA.xlsx para o WorkbookB.xlsx sem que a planilha copiada ainda faça referência ao WorkbookA.xlsx? a fórmula =B!23 torna-se =[WorkbookA.xlsx]!B!23 quando copiada.

Eu quero manter referências de células "relativas" em vez de referências de células "absolutas" (vou inventar esta terminologia no mundo do Excel se ainda não existir).

Outra alternativa possível que não consigo funcionar é a opção de colar apenas "valores" de células. Excel trata "valores" como valores calculados em vez das fórmulas reais na célula. Se eu escolher a fórmula de colar, ela ainda fornece referências absolutas.

Mais sobre por que preciso disso: Eu tenho um xlsx de produção em uso para operações diárias. Nós constantemente precisamos fazer "atualizações" para este xlsx e então uma pessoa pode criar uma cópia e suas mudanças para uma única folha. Ao mesmo tempo, outra pessoa também pode estar fazendo alterações em outra planilha. Dado que essas planilhas não possuem células dependentes em outras planilhas , como um relatório de resumo, é desejável que apenas copiemos e mesclamos as planilhas no xlsx original. Mas a referência "absoluta" está causando muitos problemas.

    
por Jake 06.03.2012 / 09:47

17 respostas

18

Tente usar Ctrl + ~ para exibir as fórmulas. Então use Ctrl + A para selecionar tudo, copiá-lo e colá-lo no bloco de notas.

Por fim, copie-o do bloco de notas e cole-o em sua outra pasta de trabalho.

    
por 02.05.2012 / 16:44
19

Achei mais fácil, em muitos casos, fazer o seguinte:

  • copie a folha para uma nova pasta de trabalho
  • ativa a nova planilha na nova pasta de trabalho
  • selecione todos ( Ctrl + A )
  • faça um achado / substitua
    • find: [WorkbookA.xlsx]!
    • substituir: < deixe em branco >
  • substitua todos
por 29.11.2012 / 20:39
9

A resposta não assinada logo abaixo desta é a que funcionou para mim, com uma pequena variação.

  1. Crie e salve uma planilha de destino.

  2. Use "mover", "copiar" ou arraste sua página com as fórmulas para a nova planilha. Isso deixa as fórmulas na nova página apontando para a planilha antiga. Em seguida, salve a nova planilha no mesmo local da planilha antiga.

  3. Em seguida, acesse a guia "Dados" > clique em Editar Links. A opção não estará ativa a menos que haja links na página.

  4. Na caixa de diálogo resultante, selecione o nome do arquivo de origem e clique em "Alterar fonte".

  5. Na caixa de diálogo de arquivo aberto que aparece em seguida, selecione o nome da nova planilha.

Clique em Fechar e você está acabado.

    
por 26.11.2013 / 23:20
8

Ou simplesmente faça o seguinte:

Converta isto:

=database_feed!A1

para isso:

=INDIRECT("database_feed!A1")

e não há mais alterações nas suas referências quando você copia entre planilhas.

Se você não tem muitas planilhas referenciadas, outra alternativa seria usar

=INDIRECT("'"&B1&"'!A1")

e digite o nome da folha de referência na célula B1. Agora você só tem uma célula para atualizar quando copiada para a nova planilha.

    
por 17.01.2014 / 18:07
2

O código abaixo pode ser adaptado às suas necessidades. Ele pega todas as fórmulas da planilha em wb1 e as aplica a uma planilha em uma nova pasta de trabalho. As fórmulas são aplicadas como String s, portanto, não há inserção de referências à pasta de trabalho original. Além disso, esse código é super rápido porque não usa a área de transferência e não requer nenhum loop pelas células.

Sub copyformulas()

Dim wb1 As Workbook, wb2 As Workbook
Dim s1 As Worksheet, s2 As Worksheet
Dim formArr() As Variant

Set wb1 = ThisWorkbook
Set s1 = wb1.Sheets("Sheet1")
Set wb2 = Workbooks.Add
Set s2 = wb2.Sheets("Sheet1")

formArr = s1.UsedRange.Formula
s2.Range("A1").Resize(UBound(formArr, 1), UBound(formArr, 2)).Formula = formArr

End Sub
    
por 07.03.2012 / 16:06
2
  • copia a planilha para 'WorkbookB.xlsx'
  • planilha aberta no novo arquivo
  • selecione todos
  • vá para o menu Dados, clique em editar links
  • edita links para que o link para o arquivo antigo seja agora um link para o arquivo atualmente aberto

Isso funciona para mim.

    
por 04.10.2013 / 13:52
0

As duas pastas de trabalho devem estar abertas para que isso funcione . Você executa essa macro e copia workbookA!sheet 1 para workbookB!sheet1 e substitui todas as referências workbookA . É grosseiro, mas funciona . Obviamente, você pode alterar o código para corresponder aos nomes do WorkbookA.xlsx, mas garantir que eles tenham a extensão correta e permaneçam entre aspas.

Ah, para fazer uma macro, caso você não saiba, pressione alt + F11 para abrir o Editor do Visual Basic. Em seguida, clique com o botão direito do mouse em WBA insert - module e copie e cole o código abaixo no módulo. Em seguida, pressione F5 para executar a macro. Se a macro não for executada, provavelmente é porque as macros não estão ativadas, então vá em frente e salve-a e reabra-a e, quando ela solicitar a ativação de macros, ative-as.

Sub copysheetremoveWBref()

    Application.ScreenUpdating = False

    'activate WBA
    Application.Workbooks("workbooka.xlsx").Activate
    'Select WBA Sheet1
    Application.Workbooks("workbooka.xlsx").Sheets("Sheet1").Select
    'copy WBA!sheet1 to WBB!sheet1
    Sheets("Sheet1").copy Before:=Workbooks("WorkbookB.xlsx").Sheets("sheet2")
    'find WBA references and remove them
    Cells.Replace What:="=[workbookA.xlsx]", Replacement:="=", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

    Application.ScreenUpdating = True


End Sub
    
por 06.03.2012 / 15:49
0

Eu consegui isso copiando as células para a nova planilha como normal, então fazendo uma busca de um substituto para remover o caminho do arquivo antigo nas fórmulas.

Por exemplo Se a primeira fórmula for =J2 e isso se tornar =[filepath]J2 , basta encontrar e substituir toda a nova planilha por [filepath] e substituir por nada. Isso exclui e restaura a fórmula para =J2 .

Não é necessário VB!

    
por 24.06.2014 / 19:11
0

Eu estava tendo um problema semelhante. A razão pela qual as fórmulas foram coladas com o link para o WBA foi que a guia (folha) na qual eu estava trabalhando no WBA recebeu um nome diferente do da WBB. Para mim, era sempre "a última folha", mas uma chamava-se "MinFlow" e a outra, "NormalFlow". Eu renomeiei ambos para 'Resultados' e o copiar / colar funcionou como eu queria - uma "pasta relativa".

    
por 12.02.2015 / 21:52
0

Selecione as células que você deseja mover. Agora tente movê-los arrastando e soltando para uma planilha diferente (aba diferente).

Eu sei, ele rola. Aqui está a parte complicada: basta pressionar cmd (mac) ou alt (win) e ele permitirá que você jogue as células em outra aba.

    
por 25.04.2015 / 13:54
0

Olá, aqui está uma solução simples para este problema:

  1. Copie as células como de costume.
  2. Na fórmula, selecione e copie o texto que o vincula à pasta de trabalho anterior [WorkbookA.xlsx].
  3. Selecione todas as células que você deseja alterar e pressione CTRL+F e selecione a guia substituir.
  4. Substitua [WorkbookA.xlsx] por espaço vazio (também não escreva nada no campo Replace with , pressione Replace All .

Voila - está feito.

    
por 30.12.2015 / 09:23
0

Outro "truque" - antes de copiar a planilha de origem, substitua todos os qualificadores de fórmula = por outro conjunto de caracteres (digamos, ###= ).

Copie a planilha, depois da cópia, substitua o qualificador de fórmula (substituindo ###= por = ).

Certifique-se de que quaisquer referências de folhas dentro dos formulários também sejam copiadas para a nova folha antes da folha de referência.

    
por 14.01.2016 / 07:57
0

Como 99% das respostas nem sequer responderam à pergunta original, aqui está a resposta correta.

  1. Copie as folhas do arquivo original (Original.xlsx) para o novo arquivo do Excel (New.xlsx) como faria normalmente. Geralmente, clico com o botão direito no nome e escolho "Mover ou copiar ...".

  2. Salve o segundo arquivo recém-criado (New.xlsx).

  3. No novo arquivo, em Dados, clique em "Editar links"

  4. No pop-up, escolha "Alterar fonte ..."

  5. Localize o arquivo (New.xlsx) e clique em Abrir.

Todas as referências ao original (Original.xlsx) serão removidas.

FEITO!

    
por 15.03.2016 / 22:31
0
  1. Copie a folha como de costume. (clique com o botão direito para tabular e vá para 'mover ou copiar') Isto é para formatação.

  2. Copie todas as células da planilha original (usando Ctrl + A ou o triângulo superior esquerdo e Ctrl + C )

  3. Cole como Valores para a nova pasta de trabalho (sobre a planilha da "etapa 1") (Opções de Colagem > 123)

por 25.04.2016 / 10:36
0

Se você precisar fazer isso automaticamente, porque você está puxando as planilhas em um programa VBA. Use isto:

Public Sub ChangeSource()
'
' ChangeSource Macro
' Edit the links to point to the current workbook.
'
    Dim allLinks As Variant
    allLinks = ThisWorkbook.LinkSources(xlExcelLinks)
    If Not IsEmpty(allLinks) Then
        Dim eachLink As Long
        For eachLink = 1 To UBound(allLinks)
            If InStr(3, "String found in source book name.", allLinks(eachLink)) Then
                ThisWorkbook.ChangeLink Name:=allLinks(eachLink), NewName:=ThisWorkbook.FullName, Type:=xlExcelLinks
            End If
        Next eachLink
    End If
End Sub

Basta alterar "String encontrada no nome do livro de origem". para coincidir com os links antigos que você deseja substituir. Você poderia remover esse bloco se quiser substituir todos os links.

    
por 10.09.2018 / 18:09
-1

Abra as duas pastas de trabalho. Na pasta de trabalho de origem (WorkbookA.xlsx), selecione a planilha que você deseja copiar. Clique com o botão direito do mouse na guia da planilha e selecione “Mover ou Copiar…”. Na caixa de diálogo "Mover ou copiar", selecione "WorkbookB.xlsx" na lista suspensa "Para reservar", escolha onde no livro você quer colocá-lo e marque "Criar uma cópia". (E clique em "OK".)

    
por 24.06.2014 / 20:04
-1

Faça uma cópia da planilha para a qual você deseja mover as planilhas, a partir das quais, nesse caso, seria WorkbookA.xlsx. Renomeie para dizer "Copy of WorkbookA.xlsx". Agora abra esta nova pasta de trabalho, bem como a pasta de trabalho para a qual você deseja mover a pasta, para a qual, nesse caso, seria WorkbookB.xlsx. Clique com o botão direito em planilhas na pasta de trabalho de cópia que você criou, por exemplo, Copiar do WorkbookA.xlsx e selecione 'mover ou copiar' e, em seguida, mova essas planilhas para o WorkbookB.xlsx. Você terminou !

    
por 06.10.2015 / 13:52