Lorsque vous manipulez des formules de tableau, "parfois", lorsque le résultat contient plus de lignes et de colonnes que précédemment disponibles dans la feuille, Google Sheets ajoute automatiquement la ligne requise. J'ai dit "parfois" car je ne savais pas encore pourquoi, parfois, Google Sheets ajoutait automatiquement de nouvelles lignes alors que d'autres fois ne le faisaient pas.
Pour aggraver les choses, comme lorsque vous utilisez MMULT avec des références ouvertes (A: A), le temps de recalcul prend quelques minutes.
Disons que j'ai une formule avec des références ouvertes comme celle-ci
=ARRAYFORMULA(MMULT(N(ROW(A2:A)>=TRANSPOSE(ROW(A2:A))),SIGN(ROW(A2:A))))
Si la feuille contient 5 000 lignes, le résultat devrait avoir 25 000 000 cellules. Parfois, il renvoie simplement le message d'erreur suivant:
Erreur
Le tableau résultant était trop grand.
D'autres fois, Google Sheets ajoute beaucoup de lignes et le temps de recalcul peut prendre quelques minutes.
Outre l'utilisation de références fermées (A1: A10) au lieu de références ouvertes (A: A), existe-t-il un moyen d'indiquer à Google Sheets de ne pas insérer de lignes ou de colonnes?
Utilisez ARRAY_CONSTRAIN (array, row_limit, column_limit)
fonction ARRAY_CONSTRAIN peut renvoyer le nombre de lignes et de colonnes de votre choix. Il vous suffit de définir les paramètres row_limit et column_limit en conséquence. Pour définir automatiquement ces paramètres, vous pouvez utiliser une fonction telle que COUNT ou COUNTA.
Pour calculer le nombre de lignes/colonnes en tenant compte de la plage de données à l'aide de fonctions intégrées,
pour les lignes, utilisez une formule comme celle-ci
=MAX(IF(LEN(A2:A)>0,ROW(A2:A)-1,0))
pour les colonnes, utilisez une formule comme celle-ci
=MAX(IF(LEN(1:1)>0,COLUMN(1:1)-1,0))
L'exemple de formule dans la question ressemblera à ceci:
= ARRAYFORMULA ( ARRAY_CONSTRAIN ( MMULT (N (ROW (A2: A)> = TRANSPOSE (ROW (A2: A))), SIGN (ROW (A2: A ))), MAX (SI (LEN (A2: A)> 0, LIGNE (A2: A) -1,0)), MAX (IF (LEN (1: 1) > 0, COLONNE (1: 1) -1,0)) ) )