Troca de duas linhas ou colunas na planilha do Microsoft Excel

1

Estou usando o Excel 2010. Suponha que você tenha esses dados em uma planilha:

line:   content:
1       data 1
2       data 2
3       data 3
4       data 4
5       data 5

Você cometeu um erro e agora precisa alternar os valores na coluna content (mas não a coluna line ) entre as linhas 2 e 4. Agora deve parecer:

line:   content:
1       data 1
2       data 4
3       data 3
4       data 2
5       data 5

Como faço para alternar uma coluna sem alterar os dados em outras colunas?

Para dar outro exemplo, se eu digitar

e,emseguida,perceboqueconfundiasfrutascítricaspequenaseazedas,queroselecionaraslinhas2e4(ouseja,queroselecionaraslinhasinteiras)

e depois alterna automaticamente algumas, mas não todas das células nessas duas linhas.

Vamos supor que o subconjunto da coluna seja constante; por exemplo (conforme ilustrado acima), Eu sempre desejaria deixar as colunas A e B no lugar e trocar as colunas C, D e E.

Não importa qual seja a tabela, independentemente dos dados, não importa a correlação de dados. Eu preciso selecionar duas linhas (ou colunas) e trocá-las mutuamente.

  • row1: abcdefg
  • row2: hijklmn

Agora, depois de mudar:

  • row1: hijklmn
  • row2: abcdefg
por Rapier 28.07.2013 / 17:08

2 respostas

2

Caminho preguiçoso para trocar células

Use uma macro VBA para trocar células individuais ou intervalos retangulares congruentes

Como usar

  1. Abra o Excel »Pressione Alt + F11 » Copiar & cole o código em um novo módulo
  2. Volte para o Excel e selecione seus dois intervalos para trocar.
    Eles precisam corresponder no tamanho e as células contam como mostrado no exemplo acima
  3. Pressione Alt + F8 e execute a macro swap .
Sub swap()

    If Selection.Areas.Count <> 2 Then Exit Sub

    Set range1 = Selection.Areas(1)
    Set range2 = Selection.Areas(2)

    If range1.Rows.Count <> range2.Rows.Count Or _
        range1.Columns.Count <> range2.Columns.Count Then Exit Sub

    range1Address = range1.Address
    range1.Cut
    range2.Insert shift:=xlShiftToRight
    Range(range1Address).Delete shift:=xlToLeft

    range2Address = range2.Address
    range2.Cut
    Range(range1Address).Insert shift:=xlShiftToRight
    Range(range2Address).Delete shift:=xlToLeft

End Sub

Dica: Atribuir um atalho + Coloque o código em um suplemento do Excel para um maior conforto. Dentro de um Add-In, a nova funcionalidade swap está disponível em todas as planilhas do Excel, sem a necessidade de copiar o código todas as vezes.

    
por 02.08.2013 / 01:08
1

Eu achei a resposta de nixda muito útil para usar como ponto de partida, mas por alguma razão não funcionou no meu computador. Sem experiência com o VBA antes de hoje, eu pude pensar nisso, o que definitivamente funciona, e também tem a vantagem de ser muito mais compreensível para alguém sem experiência com o VBA:

Sub swap()

    If Selection.Areas.Count <> 2 Then Exit Sub

    Dim temp As Variant

    Set range1 = Selection.Areas(1)
    Set range2 = Selection.Areas(2)

        If range1.Rows.Count <> range2.Rows.Count Or _
        range1.Columns.Count <> range2.Columns.Count Then Exit Sub

    temp = range1.Value
    range1.Value = range2.Value
    range2.Value = temp

End Sub
    
por 22.01.2016 / 22:17