¿Intercambiar contenido de celda en Excel?

42

¿Hay una manera fácil de intercambiar el contenido de dos celdas en Microsoft Excel?

Por fácil, me refiero a un atajo de teclado o elemento de menú, sin involucrar la copia en celdas temporales o escribir scripts de VBA o algo así. En otras palabras, estoy buscando una manera de seleccionar dos celdas y hacer clic en algún elemento del menú o presionar alguna combinación de teclas que intercambie sus contenidos. Seguramente, ¿tiene que haber una manera de hacer esto?

Dan Molding
fuente
Esto parece una implementación muy específica de un tipo, y si aún no está presente en las opciones de clasificación avanzadas, me sorprendería si puede encontrarlo en otro lugar, como una solución que no sea VBA
drapkin11

Respuestas:

47

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

A veces, hay dos celdas contiguas que deben intercambiarse. Podemos hacerlo manualmente fácilmente. Mire la siguiente captura de pantalla, quiero intercambiar la celda A4 y B4, haga lo siguiente:

ingrese la descripción de la imagen aquí

  1. Seleccione la celda que desea intercambiar. En este ejemplo, seleccione la celda A4.

  2. Presione la tecla Mayús y coloque el cursor en el borde derecho.

  3. Luego arrastre el cursor al borde derecho de la celda B4.

  4. Cuando aparezca "工", suelte el mouse.

  5. Y los dos contenidos de la celda han sido intercambiados.

ingrese la descripción de la imagen aquí

Con este método, también podemos intercambiar dos filas o columnas adyacentes.

usuario190216
fuente
8
Este debería ser el anser seleccionado para mí. ¡Gracias!
Nam G VU
2
A mi no me funciona. Simplemente inserta celdas vacías entre esas 2 celdas
phuclv
2
Esto solo funciona para celdas adyacentes, que no es lo que la pregunta original pidió.
jpierson
Esto no funciona para mí en Excel 2010: parpadea rápidamente, pero el contenido de las celdas permanece sin cambios.
Hashim
@phuclv Tuve el mismo problema que usted antes de darme cuenta de que, para el paso 2, estaba colocando el cursor del mouse en el borde inferior derecho en lugar del borde central derecho.
Richard
17

Para el caso específico de rangos rectangulares adyacentes del mismo tamaño , puede usar el método descrito en esta respuesta a una pregunta similar .

  1. Seleccione el rango derecho o inferior
  2. Presione Ctrl+X
  3. Seleccione el rango adyacente (es decir, directamente arriba o a la izquierda)
  4. Presione Ctrl+ +( +generalmente está encima de la =tecla para que esto se traduzca en Ctrl+ Shift+ =)

Tenga en cuenta que puede usar el mismo procedimiento para intercambiar filas o columnas adyacentes enteras.

Jonas Heidelberg
fuente
1
Excelente. Esto es exactamente lo que estaba buscando. Poder usar métodos abreviados de teclado y poder operar en varias celdas es mucho más rápido.
Anthony G - justicia para Mónica
Esto no funciona para mi. Y las celdas son adyacentes entre sí. No sé por qué esto no funciona. ¿Hay alguna explicación particular para este comando?
Humanismo inteligente
15

Por fácil, me refiero a un atajo de teclado o elemento de menú, sin involucrar la copia en celdas temporales o escribir scripts de VBA o algo así. Estoy buscando una manera de seleccionar dos celdas y hacer clic en algún elemento del menú o presionar alguna combinación de teclas que intercambie sus contenidos.

¿Por qué imponer esta restricción? Crear una macro hace que esto sea trivial. Que yo sepa, no se puede hacer de otra manera. Puede asignar la macro a un botón o tecla de acceso rápido.

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
fuente
44
No soy un experto en VBA y no tengo ni el tiempo ni la inclinación para convertirme en uno. También uso con frecuencia muchas computadoras diferentes. Sería bueno tener el intercambio disponible en cada computadora que uso para Excel, sin tener que buscar el código de la macro VBA que lo hace, para poder vincularlo a una tecla de acceso rápido.
Dan Moulding
3
@Dan Sería bueno si todos pudieran tener su funcionalidad de mascota integrada en Excel, pero luego se volvería aún más complicado de lo que ya es. Hay una razón por la cual Excel tiene un lenguaje macro para automatizar tareas repetitivas como esta. Publiqué el código encontrado a través de una búsqueda en Google. No tienes que ser un experto.
ghoppe
+1 vba es la forma en que Excel le permite agregar las funciones de su mascota. También hay formas de hacer que ese VBA esté disponible en muchas computadoras, solo para usted o para todos (por ejemplo, libro de trabajo personal o complementos)
Chris Neilsen
99
Difícilmente llamaría intercambiar el contenido de dos celdas / filas / columnas como una función favorita.
Nicolai
55
@ghoppe Quizás no sea esencial, pero si haces una búsqueda rápida en "intercambiar el contenido de dos celdas en Excel" (que ya tienes), es bastante obvio que Dan y yo no somos los únicos que nos preocupamos por esta característica.
Nicolai
5

No. No hay forma de intercambiar el contenido de dos celdas en Excel, sin escribir su propia macro para hacerlo.

EDITAR: Parece que ahora puede haber una manera fácil de intercambiar el contenido de las celdas en versiones más recientes de Excel, por lo que esta respuesta probablemente esté desactualizada.

Dan Molding
fuente
Esta afirmación es incorrecta. Ver la respuesta del usuario 190216.
Karl Rookey
@KarlRookey Originalmente, esa respuesta decía (y todavía lo hace) que las celdas deben ser adyacentes. Parece que esto ya no es cierto para las versiones más recientes de Excel. Si ese es el caso, entonces sí, ahora hay una mejor respuesta. ¡Gracias!
Dan Moulding
Gracias por decir esto. Todos los ejemplos aquí tienen el efecto secundario de intercambiar dos celdas (si son adyacentes) pero no "intercambian celdas", sino que "cambian" las celdas.
Peter Ritchie
2

Seleccione el primer conjunto de celdas para intercambiar y presione ctrl+ x:

Seleccione las celdas ADEMÁS de las que desea intercambiar y presione ctrl+ +.

usuario287020
fuente
1
Esto funciona solo si las celdas son adyacentes. De lo contrario, todo se desplaza cerca de las celdas objetivo.
tumchaaditya
0

Puede pegar hasta 25 elementos en el portapapeles, por lo que son fáciles de intercambiar usando ctr + tab o cmd + tab mac

Aaron
fuente
2
¿Es esta una característica estándar de Mac? El autor de la pregunta no especificó en qué plataforma están. No estoy seguro de si el portapapeles estándar en todas las versiones de Windows contiene más de un elemento, pero las utilidades gratuitas están disponibles para proporcionar esa funcionalidad (y los atajos de teclado pueden variar). ¿Podría ampliar su respuesta para hacerlo más completo para este enfoque?
Fixer1234
Intenté esto en Windows pero no pude resolverlo. Incluso probé la opción ctrl + shift + p que normalmente funciona en Visual Studio para pegar el anillo del portapapeles.
jpierson
0
  • Seleccione la celda inferior que desea intercambiar
  • Presione Ctrl+ Xy vaya a la celda con la que desea intercambiar
  • Presione Ctrl+ Shift+=

El intercambio se ejecutará.

mehndiratta co
fuente
Esto es exactamente lo mismo que la respuesta de Jonas Heidelberg , de ( ¡exactamente! ) Hace seis años, y efectivamente lo mismo que la respuesta del usuario 287020 .
Scott
0

Leí esta publicación, pero en realidad necesitaba una macro para intercambiar rangos completos. Además, necesitaba cambiar los colores. Modificó ligeramente la macro publicada originalmente, esto podría ser útil para alguien.

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
fuente