Come impedire taglia e incolla i riferimenti di modifica dei dati nelle formule?


49

Fogli Google ha una funzione in cui se si ha un riferimento a una cella di dati in una formula e si tagliano i dati da quella cella e li si incolla in una nuova posizione, il riferimento nella formula viene aggiornato per puntare alla nuova posizione della cella.

Mi piacerebbe essere in grado di tagliare e incollare i miei dati senza cambiare le mie formule.

In passato ho fatto cose orribili che coinvolgono la INDIRECT()funzione per aggirare questa funzione, ma sembra che ci debba essere un modo più semplice. Eventuali suggerimenti?


2
divertente ... Non ho mai pensato a questa funzione come un bug. Ha funzionato in Excel per decenni.
mhoran_psprep,

1
Hai trovato il tempo di controllare le risposte fornite? Forse puoi contrassegnarne uno come la migliore risposta.
Jacob Jan Tuinstra,

1
Di seguito vengono fornite molte domande diverse. La domanda può essere ripulita? Penso che un esempio del tuo problema sarebbe questo: la cella A2 contiene una formula come "= B1 + 5". B1 contiene "42". A2 visualizza "47", come previsto. Ma ti sei reso conto che B1 non dovrebbe contenere "42", C1 dovrebbe avere "42" e B1 dovrebbe avere "58". Fai clic su B1, "taglia", fai clic su C1, incolla. B1 ora è vuoto (previsto), C1 ora è "42" (previsto) ma A2 visualizza ancora "47", poiché A2 si è automaticamente aggiornato a "= C1 + 5", per seguire il comando taglia e incolla (non previsto). Quello che volevi era che A2 rimanesse "= B1 + 5". Ho ragione?
cesoide,

Risposte:


22

La =$A$1notazione può anche essere spostata automaticamente se il valore in (diciamo) A1viene modificato.

L'unica soluzione infallibile è racchiudere tutti i riferimenti INDIRECT, ad esempio =INDIRECT("$A$1")o anche solo =INDIRECT("A1").

La difficoltà con una di queste soluzioni è dove hai molte della stessa formula, ad es

=A1
=A2
=A3
...
=A99

Normalmente, dovresti compilare il primo =A1e quindi copiare e incollare (o trascinare verso il basso utilizzando il riempimento automatico) per compilare automaticamente la formula consecutiva. Se, tuttavia, la prima formula è =$A$1o =INDIRECT("A1")allora questo trucco non funzionerà (in effetti, questo è ciò che $serve - per impedire che venga cambiato automaticamente).

Se hai molte formule consecutive, una soluzione è:

  1. Crea la formula come di consueto (usa plain =A1e compilazione automatica)
  2. Usa la finestra di dialogo di sostituzione ( Ctrl+ H) e usa "cerca nelle formule" per racchiudere tutto =A1, =A2... =A99in =INDIRECT("A1")ecc. Nota che hai la possibilità di usare le espressioni regolari quando fai una ricerca e sostituzione.

Risposta aggiornata per suggerire l'uso di una migliore ricerca e sostituzione nei nuovi fogli di calcolo di Google, che può sostituire le formule e utilizzare regexps,
Motti Strom

1
Puoi fare un esempio di quali sarebbero i parametri di ricerca / sostituzione per avvolgere tutti i riferimenti di cella in una formula con INDIRETTO?
Michael,

È possibile utilizzare INDIRECT in combinazione con ROW () per avere una formula che opera sulla riga corrente. Ad esempio: = A1 + B1 diventa = INDIRETTO ("A" & ROW ()) + INDIRECT ("B" & ROW ())
Evil Pigeon

31

Dal forum di Google Documenti :

Seleziona l'intervallo di celle. Quindi usa Ctrl+ C(copia; questo dovrebbe mettere le celle e le loro formule nel buffer di incollaggio).

Ora trascina (passa con il mouse sopra il bordo della selezione fino a quando il cursore del mouse si trasforma in una mano; ora puoi trascinare) le celle selezionate nella nuova posizione.

Torna alla posizione originale in alto a sinistra delle celle copiate e usa Ctrl+ V(incolla).

Ora dovresti avere due set di formule che fanno entrambi riferimento alle stesse celle.


6
Questa è l'unica risposta che conserva le formule.
amcnabb,

3
D'accordo - questa è l'unica risposta corretta.
Stevemidgley,

1
Grazie! Sono stato sorpreso che ci sia una differenza tra "Trascina" e copia / incolla!
Creswick,

Quindi, se si desidera tagliare e incollare, è sufficiente selezionare l'intervallo di selezione + trascinare la parte, ma se si desidera copiare, sono necessari altri passaggi aggiuntivi per conservare l'originale.
Mu Mind,

2
Un metodo migliore: duplicare il foglio, tagliare dal clone del foglio, incollarlo nel foglio originale nella nuova posizione in cui è necessario. Al termine, elimina il clone del foglio. In questo modo, i riferimenti rimangono inalterati.
ADTC

30

Sono arrivato alla ricerca di un problema simile e alla fine ho trovato una soluzione per Excel che sembra funzionare perfettamente nei fogli di calcolo di Google.

Per i riferimenti di cella che non si desidera modificare in Incolla, è sufficiente aggiungere $prima di ogni parte.

Così G12sarebbe diventato$G$12

Una cella da un foglio di calcolo che sto usando che fa ciò di cui ho bisogno, assomiglia a questo:

 =$G$1&Sheet1!B3&Sheet1!A3&$G$2

1
Questo non ha funzionato per me. Vedi la mia alternativa sotto webapps.stackexchange.com/questions/22558/…
Motti Strom,

@Leonard, Wow la sintassi è orribile . È molto più intuitivo se è il contrario, cioè le celle relative usano $mentre le celle assolute sono predefinite.
Pacerier,

@Pacerier Sono completamente d'accordo con te, anche se funziona, è orribile e difficile da leggere. Non uso fogli di calcolo abbastanza spesso per capire cosa stai suggerendo però. Potresti elaborare?
Leonard,

@Leonard, intendevo che il comportamento predefinito è diverso, quindi invece di $G$1&Sheet1!B3&Sheet1!A3&$G$2farlo G1&Sheet1!$B$3&Sheet1!$A$3&G2.
Pacerier,

1
@grahamparks: quindi downvote e possibilmente lasciare un commento perché non è una soluzione. Non tentare di aggiungere il tuo commento nella risposta.
Ale

7

In Google Spreadsheets, per tagliare e incollare le celle senza spostare automaticamente le loro formule, usi Ctrl+ Xper tagliare (o Ctrl+ Cper copiare) e Ctrl+ Shift+ Vper incollare.

Questo Shiftdice a Fogli Google di lasciare in sospeso le tue formule.


a proposito, se stai usando app come Flycut (mac) con CTRL + MAIUSC + V scorciatoia già attiva, allora entrerà in conflitto con la scorciatoia del foglio di calcolo e il blocco della formula non funzionerà. Scorciatoia di Disabilita Flycut app, o semplicemente uscire in primo luogo prima di fare CTRL + MAIUSC + V .
Hlung,

13
La modifica dell'incolla con Maiusc sembra rendere i valori di Google Spreadsheet incollare i valori anziché le formule non modificate.
Matt McClure,

4
Questo non è corretto - ctrl-shift-v semplicemente incollerà i "valori" delle tue formule. Ciò impedirà il recepimento dei dati, ma le celle risultanti conterranno valori statici e non formule.
Stevemidgley,

1
Non funziona , -1.
Pacerier,

1
Non taglio mai. Quando incolli con ctrl+ shift+ v, copia sempre i valori, anche se hai fatto ctrl+ xsulle celle di origine.
sparebytes,

5

Aggirare questo allo stesso modo di Excel:

COPIA e incolla i dati, quindi torna indietro ed eliminali dalla posizione originale.


3

Cut (invece di Copy) sembra funzionare per me, probabilmente per lo stesso motivo per cui il trascinamento di celle selezionate funziona, ovvero è la stessa operazione. Questo è anche l'unico modo che conosco per incollare in un'altra pagina senza cambiare la formula.

Se stai tentando di eseguire una copia anziché uno spostamento, utilizza il metodo di trascinamento (copia prima di trascinare) o copiarlo prima da qualche altra parte nella pagina.


2

Per spostare un intervallo di celle in una nuova posizione in Fogli Google:

1. Seleziona l'intervallo di celle che desideri spostare
2. Sposta il mouse su qualsiasi bordo della selezione fino a quando il cursore non si trasforma in una mano
3. Trascina le celle nella nuova posizione

Questo fa quello che dovrebbe - li sposta - quindi tutte le informazioni sulle celle rimarranno esattamente come erano nella loro posizione originale.

ps. Anche Google lo ha indicato qui, ma non dicono che puoi trascinare da qualsiasi lato, solo quello in alto, ed è per questo che le mie istruzioni sono migliori! :) Inoltre, è bene notare che le celle selezionate devono essere adiacenti affinché questo funzioni.


Cattura molto bella!
marikamitsos,

Lo stesso metodo è menzionato anche qui . Ancora. Questo è meglio studiato e spiegato.
marikamitsos,

1

Esegui una copia di testo della formula anziché una copia di cella: usa il mouse per selezionare il testo della formula e premi CTRL + C. Quindi selezionare il campo di destinazione e premere CTRL + V. Questo preserva la formula


1
Ma dovresti ripetere questo per ogni cella ... Esiste un modo per copiare testo attraverso più celle?
Pacerier,

0

Il modo più semplice è selezionare tutte le celle che si desidera spostare e trascinare / rilasciare nel punto desiderato. Se in altre celle sono presenti formule che fanno riferimento alla posizione originale delle celle spostate, le formule di riferimento verranno automaticamente aggiornate nella nuova posizione delle celle spostate. Spero che sia di aiuto! (Supponendo che funzioni in Excel, ma l'ho fatto solo in Fogli Google).


0
  1. Seleziona le celle con il mouse
  2. Copia appunti
  3. Sposta le celle selezionate in una nuova posizione con il mouse catturando il bordo del gruppo
  4. Incolla dagli appunti nello spazio vuoto da cui hai appena spostato tutto

0

Ho appena trovato e sostituito tutte le istanze di '=' con '' (o quante più formule sto cercando di copiare come posso) per trasformare tutte le formule in testo semplice. Copio e incollo le celle, quindi aggiungo '=' indietro.

Nota: questo probabilmente non funzionerà per fogli enormi, poiché può avere conseguenze non intenzionali modificando altre celle, ma di solito funziona per i miei scopi.


0

Ecco un'altra opzione:

  1. Passa alla modalità "Mostra formule" (nel menu Visualizza)
  2. copia l'area desiderata
  3. Incolla in qualche editor di testo esterno
  4. Apporta alcune modifiche: può essere semplice come aggiungere uno spazio da qualche parte
  5. Copia le formule dall'editor di testo esterno
  6. Incolla nell'area di destinazione nel foglio
  7. Disattiva Mostra formule

Sebbene questa sembri una procedura lunga, in pratica sono solo alcuni tratti chiave. Inoltre, il passaggio 4 è obbligatorio nella mia configurazione - senza di essa Fogli aggiornerà comunque le posizioni delle celle come se fosse una copia e incolla diretta. YMMV.


0

L'uso INDIRECT()funziona alla grande per preservare la posizione assoluta dei riferimenti dopo che gli obiettivi sono stati copiati e incollati, ma il problema è che conserva anche la posizione assoluta quando la formula viene copiata, il che significa che non è possibile estendere facilmente una formula per coprire una grande gamma quando lo si utilizza.

La soluzione è combinare INDIRECT()con ROW(), COLUMN()e ADDRESS()generare programmaticamente la posizione della cella target in base alla cella della formula.

Nel caso più semplice, ad esempio quando la cella di destinazione ha una colonna fissa e rimane sempre nella stessa riga della formula, questo può essere fatto come segue:

INDIRECT("A"&ROW())

Per introdurre offset dinamici dalla cella della formula, puoi utilizzare ADDRESS():

INDIRECT(ADDRESS(ROW()-1,COL()-4))

Nello screenshot seguente, le formule in B1:E1sono state estese alle 16 righe sottostanti, quindi la sequenza numerica è A7:A10stata tagliata e incollata 6 celle. Come puoi vedere, le formule più semplici sono state automaticamente regolate e desincronizzate, mentre l'uso ingenuo di INDIRECT()non è stato estrapolato correttamente su tutte le righe, ma le due formule che utilizzano INDIRECT()insieme al recupero programmatico delle posizioni di righe e colonne sono state in grado di mantenere i loro riferimenti:

Immagine dimostrativa


-1

Puoi premere F4per scorrere tra le varie opzioni di riferimento assoluto quando il cursore si trova sulla cella o sull'intervallo. Funziona su Mac e Windows.

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.