Comment empêcher les données coupées et collées de modifier les références dans les formules?

49

Google Sheets a une fonctionnalité dans laquelle, si vous avez une référence à une cellule de données dans une formule et que vous coupez les données de cette cellule et les collez dans un nouvel emplacement, la référence dans la formule est mise à jour pour pointer vers le nouvel emplacement de la cellule.

J'aimerais pouvoir couper et coller mes données sans modifier mes formules.

J'ai déjà fait des choses hideuses dans le passé avec cette INDIRECT()fonction pour contourner cette fonctionnalité, mais il me semble qu'il doit y avoir un moyen plus facile. Aucune suggestion?

Grahamparks
la source
2
drôle ... Je n'ai jamais pensé à cette fonctionnalité comme un bug. Cela a fonctionné c'était dans Excel pendant des décennies.
mhoran_psprep
1
Avez-vous trouvé le temps de vérifier les réponses données? Peut-être pouvez-vous choisir l'une d'elles comme la meilleure réponse.
Jacob Jan Tuinstra
1
Beaucoup de questions différentes sont répondues ci-dessous. La question peut-elle être nettoyée? Je pense qu'un exemple de votre problème serait ceci: La cellule A2 contient une formule telle que "= B1 + 5". B1 contient "42". A2 affiche "47", comme prévu. Mais vous avez compris que B1 ne devrait pas contenir "42", C1 devrait être "42" et B1, "58". Vous cliquez sur B1, "couper", cliquez sur C1, collez. B1 est maintenant vide (attendu), C1 est maintenant "42" (attendu) mais A2 affiche toujours "47", car A2 est automatiquement mis à jour à "= C1 + 5" pour suivre le couper-coller (non prévu). Ce que tu voulais, c'était que A2 reste "= B1 + 5". Ai-je raison?
Césoïde le

Réponses:

22

La =$A$1notation peut également être automatiquement déplacée si la valeur entre (disons) A1est modifiée.

La seule solution sûre est de joindre toutes vos références INDIRECT, par exemple =INDIRECT("$A$1")ou même simplement =INDIRECT("A1").

La difficulté avec l’une ou l’autre de ces solutions réside dans le fait que vous utilisez plusieurs formules identiques, par exemple:

=A1
=A2
=A3
...
=A99

Normalement, vous devez remplir le premier =A1, puis copier-coller (ou faire glisser en utilisant la fonction de remplissage automatique) pour remplir automatiquement la formule suivante. Si, cependant, la première formule est =$A$1ou =INDIRECT("A1")alors cette astuce ne fonctionnera pas (en fait, c'est ce qui $est fait - pour empêcher sa modification automatique).

Si vous avez plusieurs formules consécutives, une solution est:

  1. Créez la formule comme vous le faites normalement (utilisez les =A1champs simples et à remplissage automatique)
  2. Utilisez la boîte de dialogue Remplacer ( Ctrl+ H) et utilisez "Rechercher dans les formules" pour tout insérer =A1, =A2... =A99dans la zone =INDIRECT("A1")etc. Notez que vous avez la possibilité d'utiliser des expressions régulières lorsque vous effectuez une recherche et un remplacement.
Motti Strom
la source
Réponse mise à jour pour suggérer l’utilisation de meilleures fonctions de recherche et de remplacement dans les nouvelles feuilles de calcul Google, qui peuvent remplacer les formules et utiliser les expressions rationnelles,
Motti Strom
1
Pouvez-vous donner un exemple de ce que seraient les paramètres de recherche / remplacement pour insérer toutes les références de cellules dans une formule avec INDIRECT?
Michael
Vous pouvez utiliser INDIRECT en combinaison avec ROW () pour obtenir une formule qui agit sur la ligne en cours. Par exemple: = A1 + B1 devient = INDIRECT ("A" & ROW ()) + INDIRECT (B) & ROW ())
Evil Pigeon
31

Depuis le forum Google Docs :

Sélectionnez la plage de cellules. Ensuite, utilisez Ctrl+ C(copier; cela devrait mettre les cellules et leurs formules dans le tampon de collage).

Maintenant, faites glisser (survolez le bord de la sélection jusqu'à ce que le curseur de la souris se transforme en main; vous pouvez maintenant faire glisser) les cellules sélectionnées vers le nouvel emplacement.

Revenez à la position d'origine supérieure gauche des cellules copiées et utilisez Ctrl+ V(coller).

Vous devez maintenant avoir deux ensembles de formules faisant tous deux référence aux mêmes cellules.

Matt McClure
la source
6
C'est la seule réponse qui préserve les formules.
amcnabb
3
D'accord - c'est la seule réponse correcte.
stevemidgley
1
Merci! J'ai été surpris qu'il y ait une différence entre "Drag" et copier / coller!
novembre
Donc, si vous voulez couper et coller, vous avez juste besoin de sélectionner la partie plage de sélection + glisser, mais si vous voulez copier, vous avez besoin des autres étapes supplémentaires pour préserver l'original.
Mu Mind
2
Une meilleure méthode: dupliquez la feuille, coupez-la dans le clone de la feuille, collez-la dans la feuille d'origine au nouvel emplacement, là où vous en avez besoin. Lorsque vous avez terminé, supprimez le clone de la feuille. De cette façon, les références ne sont pas affectées.
ADTC
30

Je suis tombé sur cette question en cherchant un problème similaire et nous avons finalement trouvé une solution pour Excel qui semble fonctionner parfaitement dans les feuilles de calcul Google.

Pour les références de cellule que vous ne souhaitez pas modifier lors de la pâte, ajoutez-les simplement $avant chaque partie.

Ainsi G12deviendrait$G$12

Une cellule d'un tableur que j'utilise qui fait ce dont j'ai besoin, ressemble à ceci:

 =$G$1&Sheet1!B3&Sheet1!A3&$G$2
Leonard
la source
1
Cela n'a pas fonctionné pour moi. Voir mon alternative ci-dessous webapps.stackexchange.com/questions/22558/…
Motti Strom
@ Leonard, Wow, la syntaxe est horrible . C'est beaucoup plus intuitif si c'est l'inverse, les cellules relatives utilisent $alors que les cellules absolues sont les cellules par défaut.
Pacerier
@ Pacerier Je suis tout à fait d'accord avec vous, même si cela fonctionne, c'est horrible et difficile à lire. Je n'utilise pas assez souvent les feuilles de calcul pour comprendre ce que vous suggérez. Pourriez-vous élaborer?
Leonard
@ Leonard, je voulais dire que le comportement par défaut est différent, alors au lieu de $G$1&Sheet1!B3&Sheet1!A3&$G$2, nous le faisons G1&Sheet1!$B$3&Sheet1!$A$3&G2.
Pacerier
1
@Grahamparks: Ensuite, votez et laissez éventuellement un commentaire expliquant pourquoi ce n'est pas une solution N'essayez pas d'ajouter votre propre commentaire à la réponse.
ale
7

Dans Google Spreadsheets, pour couper et coller des cellules sans déplacer automatiquement leurs formules, utilisez Ctrl+ Xpour couper (ou Ctrl+ Cpour copier) et Ctrl+ Shift+ Vpour coller.

Il Shiftindique à Google Sheets de laisser vos formules seules.

pingouin fougueux
la source
Pour votre information, si vous utilisez des applications comme Flycut (mac) avec le raccourci CTRL + SHIFT + V déjà actif, cela entrera en conflit avec le raccourci du tableur et le verrouillage de la formule ne fonctionnera pas. Raccourci de désactiver Flycut application, ou tout simplement le quitter avant de faire CTRL + MAJ + V .
Hlung
13
La modification de coller avec Shift apparaît pour que Google Spreadsheet colle des valeurs plutôt que des formules non modifiées.
Matt McClure
4
Ceci est incorrect - ctrl-shift-v collera simplement les "valeurs" de vos formules. Cela empêchera la transposition de vos données, mais les cellules résultantes contiendront des valeurs statiques et non des formules.
stevemidgley
1
Ça ne marche pas , -1.
Pacerier
1
Je ne coupe jamais. Lorsque vous collez avec ctrl+ shift+ v, il copie toujours les valeurs, même si vous avez fait ctrl+ xsur les cellules source.
sparebytes
5

Contournez cela de la même manière que dans Excel:

COPY et collez les données, puis revenez en arrière et supprimez-les de l'emplacement d'origine.

MaryC.fromNZ
la source
3

Couper (au lieu de Copier) semble fonctionner pour moi, probablement pour la même raison que le fait de faire glisser des cellules sélectionnées fonctionne - c’est-à-dire que c’est la même opération. C'est aussi le seul moyen que je connaisse pour coller sur une autre page sans changer la formule.

Si vous essayez de faire une copie au lieu d'un déplacement, utilisez la méthode glisser (copier avant de faire glisser) ou copiez-la d'abord ailleurs sur la page.

Peter Tseng
la source
2

Pour déplacer une plage de cellules vers un nouvel emplacement dans Google Sheets:

1. Sélectionnez la plage de cellules que vous souhaitez déplacer.
2. Déplacez votre souris sur n’importe quel bord de la sélection jusqu’à ce que le curseur se transforme en main.
3. Faites glisser vos cellules vers le nouvel emplacement.

Cela fait ce qu'il faut - ça les déplace - donc toutes les informations de cellule resteront exactement telles qu'elles étaient à leur emplacement d'origine.

ps. Google a également expliqué cela ici, mais ils ne disent pas que vous pouvez faire glisser n'importe quel bord, juste le haut, et c'est pourquoi mes instructions sont meilleures! :) En outre, il est bon de noter que les cellules que vous sélectionnez doivent être adjacentes pour que cela fonctionne.

Dniz
la source
Très belle prise!
marikamitsos
La même méthode est également mentionnée ici . Encore. Celui-ci est mieux étudié et expliqué.
marikamitsos
1

Faites une copie de texte de la formule au lieu d'une copie de cellule: Utilisez la souris pour sélectionner le texte de la formule et appuyez sur CTRL + C. Ensuite, sélectionnez le champ de destination et appuyez sur CTRL + V. Cela préserve la formule

Claus Rasmussen
la source
1
Mais il vous faudrait répéter cela pour chaque cellule ... Existe-t-il un moyen de copier du texte dans plusieurs cellules?
Pacerier
0

Le moyen le plus simple consiste simplement à sélectionner toutes les cellules que vous souhaitez déplacer et à les faire glisser / déposer à l'endroit souhaité. Si vous avez des formules dans d'autres cellules qui faisaient référence à l'emplacement d'origine des cellules que vous avez déplacées, les formules de référence seront automatiquement mises à jour vers le nouvel emplacement des cellules que vous avez déplacées. J'espère que cela t'aides! (En supposant que cela fonctionne dans Excel, mais que je ne l'ai fait que dans Google Sheets).

Danny
la source
0
  1. Sélectionnez les cellules avec la souris
  2. Copier le presse-papier
  3. Déplacez les cellules sélectionnées vers un nouvel emplacement avec votre souris en capturant le bord du groupe.
  4. Coller du presse-papiers dans l'espace vide dans lequel vous venez de tout déplacer
Alex Debkaliuk
la source
0

Je viens de rechercher et de remplacer toutes les occurrences de '=' par '' (ou autant des formules que je tente de copier que je peux) pour que toutes les formules soient converties en texte brut. Je copie et colle les cellules, puis ajoute le '=' .

Remarque: cela ne fonctionnera probablement pas pour les feuilles volumineuses, car cela peut avoir des conséquences inattendues en modifiant d'autres cellules, mais cela fonctionne généralement pour mes besoins.

Luke Redmore
la source
0

Voici une autre option:

  1. Passez en mode "Afficher les formules" (sous le menu Affichage)
  2. copier la zone désirée
  3. Coller dans un éditeur de texte externe
  4. Faites des changements - cela peut être aussi simple que d'ajouter un espace quelque part
  5. Copiez les formules à partir de l'éditeur de texte externe
  6. Coller dans la zone cible de la feuille
  7. Désactiver Afficher les formules

Bien que cela semble une longue procédure, dans la pratique, il ne s'agit que de quelques touches. De plus, l'étape 4 est obligatoire dans ma configuration - sans cela, Sheets continuera à mettre à jour les emplacements des cellules comme s'il s'agissait d'un copier-coller direct. YMMV.

Eran
la source
0

L'utilisation de l'outil INDIRECT()fonctionne très bien pour conserver la position absolue des références après que les cibles ont été copiées et collées, mais le problème est qu'elle préserve également la position absolue lorsque la formule est copiée, ce qui signifie qu'il est difficile d'étendre une formule pour couvrir un grand gamme lorsque vous l'utilisez.

La solution consiste à combiner INDIRECT()avec ROW(), COLUMN()et ADDRESS()à générer par programme, la position de la cellule cible en fonction de la cellule de la formule.

Dans le cas le plus simple, par exemple lorsque la cellule cible a une colonne fixe et reste toujours dans la même ligne que la formule, vous pouvez procéder comme suit:

INDIRECT("A"&ROW())

Pour introduire des décalages dynamiques à partir de la cellule de formule, vous pouvez utiliser ADDRESS():

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

Dans la capture d'écran ci-dessous, les formules de la B1:E1ont été étendues aux 16 rangées inférieures, puis la séquence de nombres a A7:A10été coupée et collée à 6 cellules. Comme vous pouvez le constater, les formules les plus simples ont été automatiquement ajustées et désynchronisées, tandis que l'utilisation naïve de INDIRECT()n'a pas été extrapolée correctement sur toutes les lignes, mais les deux formules utilisant INDIRECT()à la fois la récupération par programme des emplacements de lignes et de colonnes ont pu conserver leurs références:

Image de démonstration

Will Chen
la source
-1

Vous pouvez appuyer sur F4pour parcourir les différentes options de référencement absolu lorsque le curseur est sur la cellule ou la plage. Cela fonctionne sur Mac et Windows.

Mick Liubinskas
la source