Scambia il contenuto delle celle in Excel?


42

Esiste un modo semplice per scambiare il contenuto di due celle in Microsoft Excel?

Per semplice, intendo una scorciatoia da tastiera o una voce di menu, senza implicare la copia in celle temporanee o la scrittura di script VBA o qualcosa del genere. In altre parole, sto cercando un modo per selezionare solo due celle e fare clic su una voce di menu o premere una combinazione di tasti che cambierà il loro contenuto. Sicuramente, ci deve essere un modo per farlo?


Sembra un'implementazione molto specifica di un ordinamento, e se non è già presente nelle opzioni di ordinamento avanzate, sarei sorpreso se puoi trovarlo altrove, come soluzione non VBA
drapkin11

Risposte:


47

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

A volte, ci sono due celle adiacenti che devono essere scambiate. Possiamo farlo manualmente facilmente. Guarda lo screenshot seguente, voglio scambiare le celle A4 e B4, per favore fai come segue:

inserisci qui la descrizione dell'immagine

  1. Seleziona la cella che desideri scambiare. In questo esempio, selezionare la cella A4.

  2. Premi il tasto Maiusc e posiziona il cursore sul bordo destro.

  3. Quindi trascina il cursore sul bordo destro della cella B4.

  4. Quando viene visualizzato “工”, rilasciare il mouse.

  5. E i contenuti delle due celle sono stati scambiati.

inserisci qui la descrizione dell'immagine

Con questo metodo, possiamo anche scambiare due righe o colonne adiacenti.


8
Questa dovrebbe essere la risposta selezionata per me. Grazie!
Nam G VU,

2
Non funziona per me. Inserisce solo celle vuote tra quelle 2 celle
phuclv,

2
Questo funziona solo per celle adiacenti che non è la domanda originale.
jpierson,

Questo non funziona affatto per me su Excel 2010: lampeggia rapidamente, ma il contenuto delle celle rimane invariato.
Hashim,

@phuclv Ho avuto lo stesso problema di te prima di rendermi conto che, per il passaggio 2, stavo posizionando il cursore del mouse sul bordo in basso a destra anziché sul bordo in mezzo a destra.
Richard,

17

Per il caso specifico di intervalli rettangolari della stessa dimensione adiacenti , è possibile utilizzare il metodo descritto in questa risposta a una domanda simile .

  1. Seleziona l'intervallo destro o inferiore
  2. Premi Ctrl+X
  3. Seleziona l'intervallo adiacente (cioè, direttamente sopra o a sinistra)
  4. Premi Ctrl+ +(di +solito è sopra il =tasto, quindi questo si traduce in Ctrl+ Shift+ =)

Nota che puoi usare la stessa procedura per scambiare intere righe o colonne adiacenti.


1
Eccellente. Questo e 'esattamente quello che stavo cercando. Essere in grado di utilizzare le scorciatoie da tastiera e poter operare su più celle è molto più veloce.
Anthony G - giustizia per Monica,

Questo non funziona per me. E le celle sono adiacenti l'una all'altra. Non so perché questo non funziona. C'è qualche spiegazione particolare per questo comando?
Smart Humanism,

15

Per semplice, intendo una scorciatoia da tastiera o una voce di menu, senza implicare la copia in celle temporanee o la scrittura di script VBA o qualcosa del genere. Sto cercando un modo per selezionare solo due celle e fare clic su una voce di menu o premere una combinazione di tasti che cambierà il loro contenuto.

Perché imporre questa limitazione? La creazione di una macro rende ciò banale. Per quanto ne so, non può essere fatto diversamente. È possibile assegnare la macro a un pulsante o tasto di scelta rapida.

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     

4
Non sono un esperto VBA e non ho né il tempo né la propensione a diventarlo. Inoltre uso spesso molti computer diversi. Sarebbe bello avere lo scambio disponibile su tutti i computer che uso per Excel, senza dover cercare il codice per la macro VBA che lo fa, in modo da poterlo associare a un tasto di scelta rapida.
Dan Molding,

3
@Dan Sarebbe bello se tutti potessero avere la loro funzionalità per animali domestici incorporata in Excel, ma diventerebbe ancora più un casino gonfio di quanto non lo sia già. C'è un motivo per cui Excel ha un linguaggio macro, per automatizzare attività ripetitive come questa. Ho pubblicato il codice trovato tramite una ricerca su Google. Non devi essere un esperto.
ghoppe,

+1 vba è il modo in cui Excel ti consente di aggiungere le funzioni del tuo animale domestico. ci sono anche modi per rendere quel vba disponibile su molti computer, solo per te o per tutti (ad esempio cartella di lavoro personale o componenti aggiuntivi)
chris neilsen,

9
Difficilmente chiamerei scambiare il contenuto di due celle / righe / colonne come una funzione da compagnia.
Nicolai,

5
@ghoppe Forse non è essenziale, ma se fai una rapida ricerca su "scambia il contenuto di due celle in Excel" (che già possiedi) è abbastanza ovvio che Dan ed io siamo quasi gli unici a cui interessa questa funzionalità.
Nicolai,

5

No. Non è possibile scambiare il contenuto di due celle in Excel, senza scrivere la propria macro per farlo.

EDIT: Sembra che ora potrebbe esserci un modo semplice per scambiare i contenuti delle celle nelle versioni più recenti di Excel, quindi questa risposta è probabilmente obsoleta.


questa affermazione non è corretta. Vedi la risposta dell'utente190216.
Karl Rookey,

@KarlRookey Originariamente quella risposta affermava (e in qualche modo lo fa ancora) che le celle devono essere adiacenti. Sembra che questo potrebbe non essere più vero per le versioni più recenti di Excel. Se è così, allora sì, ora c'è una risposta migliore. Grazie!
Dan Molding,

Grazie per averlo detto. Tutti gli esempi qui riportati hanno l' effetto collaterale di scambiare due celle (se sono adiacenti) ma non "scambiano celle", "spostano" le celle.
Peter Ritchie,

2

Seleziona il primo set di celle da scambiare e premi ctrl+ x:

Seleziona le celle ALL'INTERNO di quelle con cui vuoi scambiare e premi ctrl+ +.


1
Funziona solo se le celle sono adiacenti. Altrimenti l'intera roba viene spostata vicino alle cellule bersaglio.
tumchaaditya,

0

Puoi incollare fino a 25 elementi negli Appunti, in modo che siano facili da scambiare usando ctr + tab o cmd + tab mac


2
È una funzionalità Mac standard? L'autore della domanda non ha specificato su quale piattaforma si trova. Non sono sicuro che gli Appunti standard in tutte le versioni di Windows contengano più di un elemento, ma le utilità gratuite sono prontamente disponibili per fornire tale funzionalità (e le scorciatoie da tastiera possono variare). Potresti espandere la tua risposta per renderla più completa per questo approccio?
Fixer 1234

Ho provato questo su Windows ma non sono riuscito a capirlo. Ho anche provato l'opzione ctrl + shift + p che normalmente funziona in Visual Studio per incollare l'anello degli appunti.
jpierson,


0

Ho letto questo post ma in realtà avevo bisogno di una macro per scambiare intervalli completi. Inoltre, avevo bisogno di scambiare i colori. Modificata leggermente la macro originariamente pubblicata, questo potrebbe essere utile per qualcuno.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.