Como colar dados somente em células visíveis? (Excel) - Atualizado
Este artigo ensina a copiar informações de uma coluna e colar em outra coluna considerando a existência de linhas ocultas ou com filtro.
Imagine a seguinte situação:Um cliente e/ou uma agência envia para você uma tradução em documento Excel. Este documento contém uma coluna A, em cujas células está armazenado o texto original, e também uma coluna B vazia. Bom, percebe-se que, certamente, o cliente e/ou a agência esperam que você escreva a tradução diretamente na coluna B e, por conseguinte, conclui-se que eles não conhecem uma CAT-Tool ou o seu uso.
Se você é tradutor e usa, ou já usou, uma CAT-Tool sabe do que estou falando: você talvez prefira que o texto venha escrito nas duas colunas – sendo B a cópia de A – e você traduzira a coluna B com uma CAT-Tool.
"Este comando não pode ser usado em seleções múltiplas."
Se você viu a mensagem acima, provavelmente você tentou colar dados nas células visíveis da mesma maneira que você selecionou e copiou: clicando em Página Inicial > Edição > Localizar e Selecionar > Ir Para Especial > Somente células visíveis (Office 2013, 2010, 2007). Não funciona e o jeito é recorrer às macros
Para deixar o documento do jeito que você quer, você espertamente seleciona a coluna A, copia e tenta colar na coluna B e vê que não dá certo, pois existe uma quantidade enorme de linhas ocultas! Curioso, você abre uma linha oculta de descobre que são traduções do próprio cliente e não podem ser alteradas ou apagadas. Insistente, e esperto como sempre, você tenta realizar esse procedimento pelo LibreOffice e acha que dá certo quando, na verdade, não deu, pois percebe que o texto traduzido do cliente foi substituído pelo texto original! "Poxa vida! É um procedimento tão simples! Por que não dá certo?", você pensa e lembra: "Só podia ser a Microsoft!".
O tempo passa e o desespero começa a bater. Finalmente, quase pedindo para sair, você pensa em pedir um novo documento Excel como desejado. E surge uma nova questão: "será que eles vão entender o meu pedido? Com uma macro eu resolveria isso em menos de 1 minuto". Ora! Você tem razão! No meu caso, a macro resolveu a situação em menos de 30 segundos... o problema foi encontrar a macro.
A macro é o que salvará a sua vida (exagero...). Ora, porque sem ela, você demoraria uma eternidade colando manualmente, pois você pode dar o azar de se deparar com centenas ou milhares de linhas ocultas, que podem ou não seguir um padrão! Além disso, neste caso específico, as células/linhas ocultas já estavam preenchidas com a tradução do cliente.

"No Excel: é possível selecionar e copiar informações apenas de células visíveis; mas só é possível colar em células visíveis através de macro."
Em busca da macro perdida
O meu conhecimento em programação é limitado e não consigo escrever códigos bacanas para cada novo problema que aparece. Porém, consigo, ao menos, encontrar uma macro que me sirva e consigo entender – mesmo que mal – o que ela fará quando eu clicar em executar. A dificuldade está mesmo em encontrar a "macro perdida"! E se não encontrar, por que não pedir para alguém mais experiente (nos fóruns de excel) ou mesmo contratar alguém para fazer? Dependendo do caso, pode ser que valha a pena. Para o caso acima, eu a encontrei.A macro:
Sub Copiar_Celulas_Visiveis()
Set from = Selection
Set too = Application.InputBox("Selecione o intervalo de células de destino", Type:=8)
For Each Cell In from
Cell.Copy
For Each thing In too
If thing.EntireRow.RowHeight > 0 Then
thing.PasteSpecial
Set too = thing.Offset(1).Resize(too.Rows.Count)
Exit For
End If
Next
Next
End Sub
Os arquivos de exemplo
Abra o arquivo "2. Cores - Linhas com células da coluna B preenchidas estão ocultas.xlsx". Ele já foi traduzido. O objetivo aqui é colar a tradução já feita na coluna B, que é a coluna correta e:
1. Pressione ALT+F11 para abrir a tela do Microsoft Visual Basic
3. Depois que a nova janela se abrir, cole o código da macro
![]() |
Figura 3 |
4. Salve
![]() |
Figura 4 |
5. Clique em Sim se aparecer uma tela perguntando "sim" ou "não"
![]() |
Figura 5 |
6. Feche a tela do Microsoft Visual Basic
![]() |
Figura 6 |
7. Selecione as células da coluna A (origem) que serão copiadas para a coluna B (destino). Em seguida, clique em Localizar e Selecionar e depois em Ir para especial*
![]() |
Figura 7 |
8. Selecione Somente células visíveis e depois em OK.
![]() |
Figura 8 |
9. Note que o formato da seleção se altera:
![]() |
Figura 9 |
10. Clique em Macros, conforme figura 10.
![]() |
Figura 10 |
11. Selecione a macro e clique em executar:
12. Uma caixa de diálogo aparece: é a macro sendo executada.
![]() |
Figura 12 |
13. Para evitar erros, selecione com o mouse o intervalo de células de destino, o intervalo aparece escrito automaticamente na caixa de texto e pressione OK**
![]() |
Figura 13 |
14. Depois de pressionar OK, a caixa de diálogo desaparece e somente as células visíveis selecionadas contendo o texto traduzido são copiadas para as células de destino. As células ocultas permanecem quietas, sem alteração, como deve ser.
![]() |
Figura 14 |
15. Como o cliente enviou o arquivo Excel com as linhas ocultas, é normal que o documento lhe seja retornado assim. Você pode exibir as células ocultas, mas faça Ctrl+Z depois de terminar a verificação.
![]() |
Figura 15 |
16. Todas as linhas visíveis (lembre-se de fazer Ctrl+Z).
![]() |
Figura 16 |
17. A coluna A, que deveria estar em português, está em inglês. Apenas copie e cole o texto de backup por cima***
* Para não ter de corrigir o título, selecione somente as células visíveis que foram traduzidas. Lembre-se de selecionar o mesmo intervalo na coluna B.
** Em situações em que o intervalo seja muito longo, é melhor selecionar a primeira célula do intervalo, usar a barra de rolamento para ir até a última célula do intervalo e selecioná-la com o Shift pressionado.
*** Este passo é necessário se você traduzir a coluna A para depois usar a macro. Também é possível primeiro usar a macro, para preencher as células vazias com o texto a ser traduzido, para então traduzir.
Informações importantes:
A macro foi testada novamente durante a produção do tutorial e funciona.
Se você não sabe bem como usar uma macro, veja aqui e aqui.
Traduzi o nome da macro e o texto da caixa de diálogo e a original pode ser encontrada neste endereço.
========================
DMF = Daniel Mendes Fernandes
www.dmftradutor.com
========================
Não consegui fazer a Macro =(
ResponderExcluirOi, Raýra! Para que eu possa ajudar, preciso do seguinte:
ResponderExcluir1) Qual a versão do seu Excel?
2) Pode descrever que tipo de erro acontece?
3) Se possível, envie printscreen do erro.
Não funciona!
ResponderExcluirOlá, Anônimo. Obrigado pelo comentário.
ResponderExcluirPara te ajudar, preciso das seguintes informações:
1) Qual a versão do seu Excel?
2) Descreva o tipo de erro que acontece?
3) Se possível, envie printscreen do erro.
Excel 2007
ResponderExcluirAparece um erro de compilação: Variável não definida
Oi, Bruno! Obrigado pelo comentário. Você foi o primeiro a me dar uma pista. Vou refazer o processo para ver o que pode estar acontecendo. Abraço!
ExcluirBruno, atualizei o artigo e coloquei um tutorial. Caso ainda dê problema, lembre-se de alterar as "configurações da central de confiabilidade" para usar as macros.
Excluirexcelente Daniel!!
ResponderExcluirObrigado. Espero que tenha funcionado.
ExcluirNão achei o passo a passo muito didático mas estou extremamente grato pela macro, funcionou exatamente como quis. Basicamente precisamos selecionar, no mouse mesmo, o que queremos e depois só executar a macro com sua lista filtrada. Para ficar na mesma página eu colei a lista "origem" logo abaixo a lista "destino". Assim pude selecionar a origem quando a destino estivesse filtrada e executar a macro. Muito obrigado!
ResponderExcluirTop, me salvou! Parabéns.
ResponderExcluir