Comment copier une formule Excel sans supprimer de logique

2

J'ai une table que j'essaie de garder dynamique tout en utilisant la logique suivante:

Cell D500  -  "=D18*D19"
Cell D501  -  "=D20*D21"
Cell D502  -  "=D22*D23"
...

Je dois conserver la dynamique des lignes et des colonnes car je vais copier ceci dans les colonnes E à SV (~ 500 colonnes), mais je n'arrive pas à trouver un bon moyen de copier ceci vers le bas sans incrémenter la valeur de la ligne. par 1 au lieu de 2., ou avoir toutes sortes de comportements indésirables.

Y a-t-il un bon moyen de s'y prendre?

Adam Reed
la source

Réponses:

4

Vous ne pouvez pas utiliser de simples références pour le faire. Vous devez utiliser le INDEX() fonction pour chaque référence comme suit:

=INDEX(D:D,18+(ROW()-500)*2)*INDEX(D:D,18+(ROW()-500)*2+1)
robinCTS
la source
Plus facile que mon INT() / INDIRECT combo! Joli
piko
@piko La règle d'or est de ne jamais utiliser INDIRECT() (ou OFFSET() ) car ils sont volatils et peuvent provoquer des ralentissements dans les feuilles de calcul volumineuses. C'est une bonne habitude à prendre, même pour les formules simples et les petites feuilles de calcul. De plus, la plupart des formules sont plus simples avec INDIRECT() (et généralement c'est mate, MATCH() ).
robinCTS
1
Incroyable - merci robin et piko! J'ai utilisé OFFSET avec de grandes feuilles de calcul pour aplanir les tableaux 2D de manière dynamique, ce qui ralentit effectivement les choses. Excellente solution!
Adam Reed
Oops. Le dernier INDIRECT() dans mon commentaire précédent aurait dû être INDEX()!
robinCTS
Une légère modification a été apportée à la formule car le * 2 a fait que les lignes sautaient un peu en utilisant le texte ci-dessous, mais maintenant cela fonctionne à merveille! = INDEX (D: D, 18 + ROW () - 519 + ROW (1: 1)) * INDEX (D: D, 18 + ROW () - 519 + ROW (2: 2))
Adam Reed
1

Une autre solution, utilisant le INT() une fonction:

=INDIRECT(ADDRESS(INT((ROW()-500)*2)+18,4))*INDIRECT(ADDRESS(INT((ROW()-500)*2)+19,4))

Il y a quelques paramètres:

  • 500: ceci est le numéro où votre formule commence, dans votre cas c'est la cellule D500
  • 4: c'est le numéro de colonne (la cellule D500 est dans la 4ème colonne)
  • 2: c'est le nombre de multiplications. Si vous vouliez multiplier 3 items ( D18*D19*D20 ), vous devez utiliser 3 au lieu.
  • 18 / 19: ceci est la première et la deuxième ligne de vos calculs.

Je vous invite à utiliser le bouton Evaluer dans l'onglet Formule pour voir comment cela fonctionne étape par étape.

piko
la source