LET/BYROW comment référer à la ligne courante

Bonjour à tous,

Je débute sur les fonctions dynamiques et j’ai l’impression de bloquer sur un point assez simple.

Pour contexte je compte les utiliser dans des calculs en chaine avec un nombre variables de paramètres (ici de “lignes” : chaque ligne serait un boulon). Précisément si j’ai un joint avec 10 boulons j’ai ma formule qui me calcule pour chaque boulon la force appliquée, et si je passe sur 20 boulons le tableau “s’étire automatiquement”. C’est tout l’intéret.

La question est donc, comment peut-on référencer simplement la ligne courante dans ce genre de fonctions ? Pour l’instant j’arrive à mon résultat avec une formule de ce type :

=LET(
colx;SEQUENCE(10;1;1;1); coly;SEQUENCE(10;1;10;-1); calc;BYLIGNE(SEQUENCE(10;1;1;1);LAMBDA(x;SOMME.CARRES(CHOISIRLIGNES(ASSEMB.H(colx;coly);x))));
ASSEMB.H(colx;coly;calc))

Mais je trouve ça “long”, dans le sens où si je veux extraire 3 ou 4 paramètres ca devient vite pesant.

La question de fond est de savoir s’il est plus intéressant pour moi, pour ces calculs “par ligne”, de repasser en formules “statiques” qui réfèrent aux lignes de la matrice étendue automatiquement (mais alors je dois étirer mes formules manuellement), ou bien si je m’y prends mal et qu’il existe un moyen plus simple de référer “à la ligne courante”.

Merci pour vos réponses.

Bonjour à tous !

Une seule variable à renseigner : 10

=LET(
    x; SEQUENCE(10);
    y; TRIER(x; ; -1);
    c; MAP(x; y; LAMBDA(a; b; SOMME.CARRES(a; b)));
    ASSEMB.H(x; y; c)
)

Merci JFL, je pense que c'est bien map dont j'ai besoin.

Oui bon les séquences de 10 sont des exemples, en réalité j'ai d'autres calculs mais avec map je devrais m'en sortir, top merci !

Bonjour à tous de nouveau !

Bien...

Je vous remercie de ce retour.

Bonjour à tous,

En retard j'avais fait ça :

=LET(
x;SEQUENCE(10);
y;SEQUENCE(10;;10;-1);
a;MAP(ASSEMB.H(x;y);LAMBDA(z;z*z));
ASSEMB.H(a;BYROW(a;SOMME)))

Bonjour à tous de nouveau !

@JB_ : Hello !

Avez-vous comparé le résultat de votre proposition avec le tableau attendu ?

Oh le co* !

Rectification (j'ai copié le TRIER, c'est astucieux et ça réduit le nombre de caractères )

=LET(
x;SEQUENCE(10);
y;TRIER(x;;-1);
z;ASSEMB.H(x;y);
t;BYROW(MAP(z;LAMBDA(u;u*u));SOMME);
ASSEMB.H(x;y;t))

Bonjour à tous de nouveaux,

Après quelques tests c’était bien la fonction MAP que je cherchais, me permettant de prendre n colonnes en entrées et d’appliquer, pour chaque valeur (ligne) de ces colonnes, une fonction non dépendante des autres lignes.

Les séquences n’étaient là que pour simuler de la data, cependant j’ai vu comment se comportait la fonction avec moins de paramètres, merci.

Bonne journée.

Rechercher des sujets similaires à "let byrow comment referer ligne courante"