Comment obtenir le résultat de la formule calculée avec plusieurs colonnes directement à partir du calcul d'un tableau en mémoire ?Les exigences de calcul avec les données de "Big Class.jmp" et la formule sont les suivantes :
Ajoutez la colonne "row6" et trouvez la hauteur minimale à partir de la ligne 10 et jusqu'à 6 lignes ;
Ajoutez la colonne "row7" et trouvez la valeur minimale de la colonne de hauteur à partir de la ligne 10 et jusqu'à 7 lignes ;
...
Comment trouver le résultat de "row6" -- "row9" directement en utilisant la méthode de la matrice mémoire ?
Merci!
dt=Open("$SAMPLE_DATA/Big Class.jmp");
dt<<NEW column="">9,min(height[Index(Row()-6,Row())])));dt<<RUN formulas="">9,min(height[Index(Row()-7,Row())])));dt<<RUN formulas="">9,min(height[Index(Row()-8,Row())])));dt<<RUN formulas="">9,min(height[Index(Row()-9,Row())])));dt<<RUN formulas=""></RUN></RUN></RUN></RUN></NEW>
ScriptRe : Comment obtenir le résultat de la formule calculée avec plusieurs colonnes directement à partir du calcul d'un tableau en mémoire ?Comme ma capacité de lecture en anglais est limitée, je ne peux utiliser que des exemples prêts à l'emploi à titre de référence.
La réponse se trouve dans cet exemple.Remplacement des valeurs de matrice
Merci Experts !
Re : Comment obtenir le résultat de la formule calculée avec plusieurs colonnes directement à partir du calcul d'un tableau en mémoire ?Mon vrai calcul est :
1. Calculez la valeur minimale selon les exigences ci-dessus.
2. Calculer la valeur maximale selon le même principe.
3. Mettez la valeur maximale/minimale des catégories 6, 7, 8 et 9 respectivement.
4. Sélectionnez la valeur minimale des quatre ratios
Cela génère le rapport minimum de chaque ligne dans la table. Les autres données intermédiaires ne sont pas générées.

J'ai écrit le code dans le VBA d'Excel.
Sub vba()
ar = Range("d2:d" & Cells(Rows.Count, "d").End(3).Row)
ReDim br(1 To UBound(ar), 1 To 8): ReDim cr(1 To UBound(ar), 1 To 1)
For r = 10 To UBound(ar)
n = 99: m = 0
For c = 0 To 8
If ar(r - c, 1) < n Then n = ar(r - c, 1)
If ar(r - c, 1) > m Then m = ar(r - c, 1)
If c > 4 Then br(r, c - 4) = n: br(r, c) = m
Next
Next
Cells(2, "G").Resize(UBound(br), UBound(br, 2)) = br
For r = 10 To UBound(ar)
For c = 1 To 4
If c = 1 Then
cr(r, 1) = br(r, c + 4) / br(r, c)
Else
If br(r, c + 4) / br(r, c) < cr(r, 1) Then cr(r, 1) = br(r, c + 4) / br(r, c)
End If
Next
Next
Cells(2, "f").Resize(UBound(br), 1) = cr
End Sub
Comment changer ce VBA en JSL?
Merci!
Re : Comment obtenir le résultat de la formule calculée avec plusieurs colonnes directement à partir du calcul d'un tableau en mémoire ?Merci Jim!
Il semble que cette méthode ne soit pas l'opération complète de la matrice mémoire.
Re : Comment obtenir le résultat de la formule calculée avec plusieurs colonnes directement à partir du calcul d'un tableau en mémoire ?Names Default To Here( 1 );
dt = current data table();
theHeight = dt:height << get values;
row6=shape([.],40);
row7=shape([.],40);
row8=shape([.],40);
row9=shape([.],40);
row10=shape([.],40);
For(i=11,i<=N Rows(theHeight),i++,
row6[i]=Min(theHeight[i-6::i]);
row7[i]=Min(theHeight[i-7::i]);
row8[i]=Min(theHeight[i-8::i]);
row9[i]=Min(theHeight[i-9::i]);
row10[i]=Min(theHeight[i-10::i]);
);
Vous devez lire le Guide de création de scripts afin de pouvoir commencer à résoudre ces problèmes par vous-même.
Re : Comment obtenir le résultat de la formule calculée avec plusieurs colonnes directement à partir du calcul d'un tableau en mémoire ?Si je comprends bien, vous souhaitez obtenir des résultats pour row6 à row9 directement dans des tableaux sans utiliser de formules?
Vous trouverez ci-dessous un exemple pour la ligne 6 utilisant Pour chaque ligne avec une liste et le même calcul que la formule pour la colonne ligne 6.
Names Default To Here(1);
dt=Open("$SAMPLE_DATA/Big Class.jmp");
dt<<NEW column="">9,
min(height[Index(Row()-6,Row())])
)
);
);
dt<<RUN formulas="">9,
min(:height[Index(Row()-6,Row())])
)
)
);
show(row6_list);
dt << new column("row6_l", << set values(row6_list));</RUN></NEW>