Trocar o conteúdo da célula no Excel?

42

Existe uma maneira fácil de trocar o conteúdo de duas células no Microsoft Excel?

Por fácil, quero dizer um atalho de teclado ou item de menu, sem envolver a cópia para células temporárias ou a escrita de scripts VBA ou qualquer coisa assim. Em outras palavras, estou procurando uma maneira de selecionar apenas duas células e clicar em algum item do menu ou pressionar alguma combinação de teclas que troque seu conteúdo. Certamente, tem que haver uma maneira de fazer isso?

Dan Moulding
fonte
Esta parece ser uma aplicação muito específico de uma espécie, e se não já presente nas opções de classificação avançada, eu ficaria surpreso se você pode encontrá-lo em outro lugar, como um não-VBA solução
drapkin11

Respostas:

47

De: http://www.extendoffice.com/documents/excel/860-excel-swap-contents-of-two-cells.html

Às vezes, há duas células adjacentes que precisam ser trocadas. Podemos fazer isso manualmente com facilidade. Olhe para a captura de tela a seguir, quero trocar as células A4 e B4, faça o seguinte:

insira a descrição da imagem aqui

  1. Selecione a célula que você deseja trocar. Neste exemplo, selecione a célula A4.

  2. Pressione a tecla Shift e coloque o cursor na borda direita.

  3. Em seguida, arraste o cursor para a borda direita da célula B4.

  4. Quando aparecer “工”, solte o mouse.

  5. E o conteúdo das duas células foi trocado.

insira a descrição da imagem aqui

Com esse método, também podemos trocar duas linhas ou colunas adjacentes.

user190216
fonte
8
Este deve ser o anser selecionado para mim. Obrigado!
Nam G VU
2
Isso não funciona para mim. É apenas inserir células vazias entre essas células 2
phuclv
2
Isso funciona apenas para células adjacentes, o que não é o que a pergunta original fazia.
jpierson
Isso não funciona para mim no Excel 2010 - ele pisca rapidamente, mas o conteúdo das células permanece inalterado.
Hashim 12/10
@phuclv Eu tive o mesmo problema que você antes de perceber que, para a etapa 2, eu estava colocando o cursor do mouse na borda inferior direita, em vez da borda direita central.
Richard
17

Para o caso específico de intervalos retangulares do mesmo tamanho adjacentes , você pode usar o método descrito nesta resposta para uma pergunta semelhante .

  1. Selecione a faixa direita ou inferior
  2. Pressione Ctrl+X
  3. Selecione o intervalo adjacente (ou seja, diretamente acima ou à esquerda)
  4. Pressione Ctrl+ +( +geralmente está acima da =tecla, então isso se traduz em Ctrl+ Shift+ =)

Observe que você pode usar o mesmo procedimento para trocar linhas ou colunas adjacentes inteiras.

Jonas Heidelberg
fonte
1
Excelente. Era exatamente isso que eu estava procurando. Ser capaz de usar atalhos de teclado e operar em várias células é muito mais rápido.
Anthony G - justiça para Monica
Isso não funciona para mim. E as células são adjacentes uma à outra. Não sei por que isso não funciona. Existe alguma explicação específica para esse comando?
Smart Humanism
15

Por fácil, quero dizer um atalho de teclado ou item de menu, sem envolver a cópia para células temporárias ou a escrita de scripts VBA ou qualquer coisa assim. Estou procurando uma maneira de selecionar apenas duas células e clicar em algum item do menu ou pressionar alguma combinação de teclas que troque seu conteúdo.

Por que impor essa restrição? Criar uma macro torna isso trivial. Até onde eu sei, isso não pode ser feito de outra maneira. Você pode atribuir a macro a um botão ou tecla de atalho.

Sub Swap()     
    If Selection.Count <> 2 Then     
         MsgBox "Select 2 cells (only) to swap."     
         Exit Sub     
    End If     
    Set trange = Selection     
    If trange.Areas.Count = 2 Then     
         temp = trange.Areas(2)     
         trange.Areas(2) = trange.Areas(1)     
         trange.Areas(1) = temp     
    Else     
         temp = trange(1)     
         trange(1) = trange(2)     
         trange(2) = temp     
    End If     
End Sub     
ghoppe
fonte
4
Não sou especialista em VBA e não tenho tempo nem vontade de me tornar um. Eu também uso frequentemente muitos computadores diferentes. Seria bom ter a troca disponível em todos os computadores que eu uso para o Excel, sem precisar procurar o código da macro VBA que faz isso, para que eu possa vinculá-lo a uma tecla de atalho.
Dan Molding
3
@ Dan Seria bom se todos pudessem ter sua funcionalidade de estimação incorporada no Excel, mas isso se tornaria uma bagunça ainda mais inchada do que já é. Há uma razão pela qual o Excel possui uma linguagem de macro para automatizar tarefas repetitivas como essa. Eu publiquei o código encontrado através de uma pesquisa no google. Você não precisa ser um especialista.
ghoppe
+1 vba é a maneira como o excel permite que você adicione suas funções de estimação. há também maneiras de fazer que o VBA disponível em muitos computadores, apenas para si mesmo ou para todos (por exemplo pasta de trabalho pessoal, ou suplementos)
chris Neilsen
9
Eu dificilmente chamaria a troca do conteúdo de duas células / linhas / colunas para ser uma função de estimação.
Nicolai
5
@ghoppe Talvez não seja essencial, mas se você fizer uma pesquisa rápida em "trocar o conteúdo de duas células no excel" (que você já possui), é óbvio que Dan e eu dificilmente somos os únicos que se importam com esse recurso.
Nicolai
5

Não. Não há como trocar o conteúdo de duas células no Excel, sem escrever sua própria macro para fazê-lo.

EDIT: Parece que agora pode haver uma maneira fácil de trocar o conteúdo da célula nas versões mais recentes do Excel, portanto essa resposta provavelmente está desatualizada.

Dan Moulding
fonte
esta afirmação está incorreta. Veja a resposta do usuário190216.
Karl Rookey
@KarlRookey Originalmente, essa resposta dizia (e meio que continua sendo) que as células devem estar adjacentes. Parece que isso pode não ser mais verdadeiro para versões mais recentes do Excel. Se for esse o caso, então, sim, agora há uma resposta melhor. Obrigado!
Dan Molding
Obrigado por dizer isso. Todos os exemplos aqui têm o efeito colateral de trocar duas células (se forem adjacentes), mas não "troca de células", mas "muda" as células.
Peter Ritchie
2

Selecione o primeiro conjunto de células a ser trocado e pressione ctrl+ x:

Selecione as células AO lado das que você deseja trocar e pressione ctrl+ +.

user287020
fonte
1
Isso funciona apenas se as células estiverem adjacentes. Caso contrário, todo o material é deslocado para perto das células-alvo.
tumchaaditya
0

Você pode colar até 25 itens na área de transferência para facilitar a troca usando ctr + tab ou cmd + tab mac

Aaron
fonte
2
Esse é um recurso padrão do Mac? O autor da pergunta não especificou em que plataforma eles estão. Não tenho certeza se a área de transferência padrão em todas as versões do Windows contém mais de um item, mas utilitários gratuitos estão prontamente disponíveis para fornecer essa funcionalidade (e os atalhos do teclado podem variar). Você poderia expandir sua resposta para torná-la mais abrangente para essa abordagem?
precisa saber é o seguinte
Eu tentei isso no Windows, mas não consegui descobrir. Eu até tentei a opção ctrl + shift + p que normalmente funciona no Visual Studio para colar fora do anel da área de transferência.
jpierson
0
  • Selecione a célula inferior que você deseja trocar
  • Pressione Ctrl+ Xe vá para a célula com a qual deseja trocar
  • Pressione Ctrl+ Shift+=

A troca será executada

mehndiratta co
fonte
É exatamente o mesmo que a resposta de Jonas Heidelberg , de ( exatamente! ) Seis anos atrás, e efetivamente o mesmo que a resposta de user287020 .
Scott
0

Eu li este post, mas realmente precisava de uma macro para trocar intervalos completos. Além disso, eu precisava trocar as cores. Modificada a macro originalmente postada levemente, isso pode ser útil para alguém.

Sub Swap()

    If Selection.Areas.Count <> 2 Then
         MsgBox "Select 2 cell ranges (only) to swap."
         Exit Sub
    End If


    If Selection.Areas(1).Count <> Selection.Areas(2).Count Then
         MsgBox "The two areas must be of equal size"
         Exit Sub
    End If

    'With this for loop we run through each cell 1 by 1
    For i = 1 To Selection.Areas(1).Count
        'Swapping values
        temp = Selection.Areas(1)(i)
        Selection.Areas(1)(i) = Selection.Areas(2)(i)
        Selection.Areas(2)(i) = temp

        'Swapping color
        tempColor = Selection.Areas(1)(i).DisplayFormat.Interior.Color
        Selection.Areas(1)(i).Interior.Color = Selection.Areas(2)(i).DisplayFormat.Interior.Color
        Selection.Areas(2)(i).Interior.Color = tempColor
    Next i

End Sub
Ivo van der Marel
fonte