J'ai créé une table simple et essaye de diviser les données avec des sous-totaux.
< img src = "https://i.stack.imgur.com/h7w71.png" alt = "Entrez la description de l'image ici"> p>
La formule sous-totale a la vue suivante: p> Le problème est que la formule est extrêmement lente. Existe-t-il un moyen de le rendre plus rapide? P> exemple de fichier: p> https://docs.google.com/spreadsheets/d/1hpgelzfar2s6piqmvdq8mipzndw2esqkawzfo4iica/edit?usp=sharing P> P>
3 Réponses :
oui il y a p>
Plus il est plus facile de supprimer les lignes vides sous la plage de données. P>
Un qui peut nécessiter une maintenance, remplacer la référence ouverte comme Un qui augmente la complexité de formule une volatilité, mettre chaque référence ouverte à l'intérieur $ A2: $ A code> par des références fermées, c'est-à-dire
array_consrain code> mais il est plus facile de maintenir au cas où de nouvelles lignes de données ont été ajoutées p>
Utilisez la plage "nécessaire":
=ARRAYFORMULA(IFERROR(IF(A2:A; MMULT(( INDIRECT("B2:B"&MAX(IF(B2:B="";; ROW(B2:B)))) < TRANSPOSE(ROW( INDIRECT("A2:A"&MAX(IF(A2:A=TRUE; ROW(A2:A); )))))) * (TRANSPOSE(ROW( INDIRECT("A2:A"&MAX(IF(A2:A=TRUE; ROW(A2:A); ))))) < ROW( INDIRECT("A2:A"&MAX(IF(A2:A=TRUE; ROW(A2:A); ))))); IF(ISNUMBER( INDIRECT("C2:C"&MAX(IF(C2:C="";; ROW(C2:C)+1)))); INDIRECT("C2:C"&MAX(IF(C2:C="";; ROW(C2:C)+1))); 0)); )))