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.
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.
Achei mais fácil, em muitos casos, fazer o seguinte:
[WorkbookA.xlsx]!
A resposta não assinada logo abaixo desta é a que funcionou para mim, com uma pequena variação.
Crie e salve uma planilha de destino.
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.
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.
Na caixa de diálogo resultante, selecione o nome do arquivo de origem e clique em "Alterar fonte".
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.
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.
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
Isso funciona para mim.
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
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!
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".
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.
Olá, aqui está uma solução simples para este problema:
CTRL+F
e selecione a guia substituir. Replace with
, pressione Replace All
. Voila - está feito.
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.
Como 99% das respostas nem sequer responderam à pergunta original, aqui está a resposta correta.
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 ...".
Salve o segundo arquivo recém-criado (New.xlsx).
No novo arquivo, em Dados, clique em "Editar links"
No pop-up, escolha "Alterar fonte ..."
Localize o arquivo (New.xlsx) e clique em Abrir.
Todas as referências ao original (Original.xlsx) serão removidas.
FEITO!
Copie a folha como de costume. (clique com o botão direito para tabular e vá para 'mover ou copiar') Isto é para formatação.
Copie todas as células da planilha original (usando Ctrl + A ou o triângulo superior esquerdo e Ctrl + C )
Cole como Valores para a nova pasta de trabalho (sobre a planilha da "etapa 1") (Opções de Colagem > 123)
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.
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".)
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 !