La colonne de formule omet la dernière ligneSalut à tous,
un client m'a posé une question sur un problème d'évaluation de formule et m'a envoyé ces captures d'écran.
(Ils ont créé cette formule pour une colonne de formules, car ils souhaitent que le tableau s'agrandisse en continu.)

Le problème qu'ils voient avec cela est que la cellule de la colonne de formule de la dernière ligne reste vide.

Y a-t-il une raison évidente à cela ? Et un moyen de le résoudre ?
(la formule est censée trouver la référence associée dans la colonne 1 ("Spalte 1"), puis diviser la valeur de la colonne 2 ("Spalte") de la ligne actuelle par la valeur respective de la ligne avec la correspondance. La colonne 3 ("Spalte 3") est la colonne des formules.
Merci et meilleures salutations,
Florian
Re : La colonne de formule omet la dernière lignele If() imbriqué renvoie-t-il le troisième argument parce que le premier argument est évalué à false ? Il renvoie la chaîne "pas de correspondance", mais il s'agit d'une colonne numérique, donc le résultat est manquant (".").
De plus, leur formule est évaluée automatiquement par ligne. L'expression de formule itère ensuite sur les lignes et pour chaque ligne, itère sur toutes les lignes. Ce calcul est-il valide ?
Re : La colonne de formule omet la dernière ligneJe suis d'accord avec Marc. La formule fait beaucoup d'itérations dans chaque ligne. Qu'est-ce qu'ils essaient de calculer exactement ?
De plus, ils attribuent une valeur, peut-être à plusieurs reprises, à Spalte 3[i] dans la condition intermédiaire If(). Ce n'est pas conventionnel et difficile à suivre et peut-être pas ce qu'ils veulent.
Re : La colonne de formule omet la dernière ligneBonjour Floriane,
Je suggérerais au client d'utiliser quelque chose comme la formule ci-dessous au lieu d'une boucle imbriquée. Cette formule divise par la valeur de la ligne, contenant "0 %", qui a la même référence que la ligne actuelle.
dt = :Spalte 1 << get data table;
Eval(
Eval Expr(
:Spalte 2 / :Spalte 2[ dt << get rows where(
Contains( :Spalte 1, "0%" ) & Contains(
:Spalte 1,
Expr(
Word( 3, dt:Spalte 1[Row()], "-" )
)
)
) ]
)
);
Si, comme cela semble être le cas, le client dispose de données "parfaites", dans le sens où les lignes apparaissent dans un ordre prévisible et qu'il n'y a pas de lignes manquantes, alors cette formule beaucoup plus simple fonctionnera tout aussi bien :
:Spalte 2 / :Spalte 2[ Mod ( Row ( ) - 1, 3 ) + 1 ]
Ce sont les colonnes :spalte 3 et :spalte 3a dans la capture d'écran ci-dessous. J'ai modifié les valeurs des colonnes afin que les ratios soient triviaux à vérifier.

Acclamations,
brady