Je veux savoir combien de cellules il faut pour additionner N.Veuillez voir l'exemple suivant:

number | cells to sum of 100
  100   | 1
  50    | 2
  20    | 3
  25    | 4
  15    | 4
  90    | 2
  10    | 2

Voir la dernière colonne, il trouve le nombre minimum de cellule actuelle + cellules précédentes à la somme de 100.

Existe-t-il un moyen de le faire?

Merci.

0
gabi 1 mai 2017 à 13:56

3 réponses

Meilleure réponse

Dans B2, formule matricielle ** :

=IFERROR(1+ROWS(A$2:A2)-MATCH(100,MMULT(TRANSPOSE(A$2:A2),0+(ROW(A$2:A2)>=TRANSPOSE(ROW(A$2:A2)))),-1),"Not Possible")

Copiez au besoin.

Modifiez la valeur de seuil codée en dur (100 ici) si nécessaire.

En guise d'explication sur la pièce:

MMULT(TRANSPOSE(A$2:A2),0+(ROW(A$2:A2)>=TRANSPOSE(ROW(A$2:A2))))

En utilisant les données fournies et en prenant la version de ce qui précède de B5, c'est-à-dire:

MMULT(TRANSPOSE(A$2:A5),0+(ROW(A$2:A5)>=TRANSPOSE(ROW(A$2:A5))))

Dont la première partie, à savoir:

TRANSPOSE(A$2:A5)

Retour:

{100,50,20,25}

Et dont la deuxième partie, à savoir:

0+(ROW(A$2:A5)>=TRANSPOSE(ROW(A$2:A5)))

Décide de:

0+({2;3;4;5}>=TRANSPOSE({2;3;4;5}))

C'est à dire.:

0+({2;3;4;5}>={2,3,4,5})

Lequel est:

0+{TRUE,FALSE,FALSE,FALSE;TRUE,TRUE,FALSE,FALSE;TRUE,TRUE,TRUE,FALSE;TRUE,TRUE,TRUE,TRUE})

Lequel est:

{1,0,0,0;1,1,0,0;1,1,1,0;1,1,1,1}

Une compréhension de la multiplication matricielle nous dira que:

MMULT(TRANSPOSE(A$2:A5),0+(ROW(A$2:A5)>=TRANSPOSE(ROW(A$2:A5))))

Qui est ici:

MMULT({100,50,20,25},{1,0,0,0;1,1,0,0;1,1,1,0;1,1,1,1})

Est:

{195,95,45,25}

C'est-à-dire un tableau dont les quatre éléments sont respectivement équivalents:

=SUM(A2:A5) =SUM(A3:A5) =SUM(A4:A5) =SUM(A5:A5)

Cordialement

** Les formules matricielles ne sont pas saisies de la même manière que les formules «standard». Au lieu d'appuyer simplement sur ENTRÉE, vous maintenez d'abord CTRL et MAJ, puis appuyez uniquement sur ENTRÉE. Si vous l'avez fait correctement, vous remarquerez qu'Excel met des accolades {} autour de la formule (mais n'essayez pas de les insérer manuellement vous-même).

2
XOR LX 3 mai 2017 à 12:54

J'ai fait les 3 premiers avec une formule Excel: D3> 100 C4 est l'endroit où vos nombres commencent, donc C4 = 100, C5 = 50 etc. La formule est sur D4, D5, D6 etc.

Au J4:

= SI (C4> = D3; 1; "Faux")

Au J5:

= IF (C5> = D3; 1; IF (C5 + C4> = D3; 2; "Erreur"))

Au J6:

= IF (C6> = D3; 1; IF (C6 + C5> = D3; 2; IF (C6 + C5 + C4> = D4; 3; "Erreur")))

Vous pouvez continuer à faire cela, continuez simplement à remplacer "Error" par une version plus longue / mise à jour de IF (C6 + C5 + C4> = D4; 3.

Je ne sais pas si c'est le meilleur moyen, mais cela permettra d'y parvenir.

0
CvP 1 mai 2017 à 13:03

Une façon de résoudre ce problème consiste à créer une matrice NxN d'équations au lieu d'une simple colonne. Un exemple d'image est fourni. Les colonnes E à I sont masquées. La dernière colonne à droite détermine le nombre requis

Solution

Théoriquement, vous pouvez également coder en dur les équations si le nombre de lignes nécessaires pour atteindre 100 est un petit nombre connu. Par exemple, si le nombre de lignes est toujours de quatre ou moins, C8 serait =IFS(B8>=100,1,SUM(B7:B8)>=100,2,SUM(B6:B8)>=100,3,SUM(B5:B8)>=100,4). BTW, vous rencontrerez des problèmes de limite de somme avec cette équation sur les première, deuxième et troisième lignes. Par conséquent, la première ligne devra être =if(B8>=100,1,""), la deuxième ligne sera =IFS(B9>=100,1,SUM(B8:B9)>100,2,TRUE,"") et ainsi de suite.

0
jlear 1 mai 2017 à 13:55