如何直接從內存中的數組計算得到多列計算公式的結果?使用“Big Class.jmp”的數據和公式進行計算的要求如下:
添加列“row6”並找到第 10 行和最多 6 行的最小高度;
添加“row7”列,從第 10 行開始,直到第 7 行,找到高度列的最小值;
...
如何直接用內存數組法求“row6”--“row9”的結果?
謝謝!
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>
腳本Re: 如何直接從內存中的數組計算中得到多列計算公式的結果?由於本人英語閱讀能力有限,只能舉現成的例子作為參考。
答案可以在這個例子中找到。替換矩陣值
謝謝專家!
Re: 如何直接從內存中的數組計算中得到多列計算公式的結果?我的實際計算是:
1. 按上述要求計算最小值。
2. 同理計算最大值。
3. 分別放上第6、7、8、9類的最大值/最小值。
4. 選擇四個比率中的最小值
這輸出每行的最小比例到表中。其他中間數據不輸出。

我在 Excel 的 VBA 中編寫了代碼。
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
如何將此 VBA 更改為 JSL?
謝謝!
Re: 如何直接從內存中的數組計算中得到多列計算公式的結果?謝謝吉姆!
這個方法好像不是全內存數組操作。
Re: 如何直接從內存中的數組計算中得到多列計算公式的結果?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]);
);
您必須閱讀腳本指南,這樣您才能開始自己解決這些問題。
Re: 如何直接從內存中的數組計算中得到多列計算公式的結果?如果我理解正確的話,你想在不使用公式的情況下直接將第 6 行到第 9 行的結果獲取到數組嗎?
下面是 row6 的示例,使用 For Each Row with list 和與列 row6 的公式相同的計算。
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>