你好
我有一張不同 ID 的處理步驟和處理時間的表。 但是,我的某些流程步驟在每個 ID 的流程中發生多次。 我想創建一個專欄,將所有流程步驟分為“合成”或“處理”。 這些組將根據它們是否發生在另一個處理步驟之前或之後來確定。
我希望公式能夠找到每個 ID 的生成步驟時間,並將其與該 ID 的所有其他流程步驟時間進行比較。
我試圖使用某種循環,但我是腳本編寫新手,循環非常令人困惑!
有什麼辦法可以做到這一點嗎???
例如,我的內容如下所示,我想添加“類別”列。
| ID | 工藝步驟 | 處理時間 | 類別 |
| 10 | 烘乾 | 9:00 | 合成 |
| 10 | 生成 | 9:30 | 合成 |
| 10 | 烘乾 | 10:00 | 加工 |
| 10 | 完成的 | 11:00 | 加工 |
| 11 | 烘乾 | 2:00 | 合成 |
| 11 | 生成 | 2:30 | 合成 |
| 11 | 烘乾 | 2:45 | 加工 |
| 11 | 完成的 | 4:00 | 加工 |
| 12 | 烘乾 | 7:30 | 合成 |
| 12 | 生成 | 7:45 | 合成 |
| 12 | 烘乾 | 8:00 | 加工 |
| 12 | 完成的 | 9:00 | 加工 |
有任何想法嗎??
謝謝你!
這個腳本似乎就是你想要的。 如果您願意,可以將其轉換為公式
Names Default To Here( 1 );
dt = New Table( "Untitled 13",
Add Rows( 12 ),
New Column( "ID",
Character,
"Nominal",
Set Values( {"10", "10", "10", "10", "11", "11", "11", "11", "12", "12", "12", "12"} )
),
New Column( "Process Step",
Character( 16 ),
"Nominal",
Set Values(
{"Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying",
"Finished"}
)
),
New Column( "Process Time",
Numeric,
"Nominal",
Format( "h:m", 12 ),
Input Format( "h:m" ),
Set Values( [32400, 34200, 36000, 39600, 7200, 9000, 9900, 14400, 27000, 27900, 28800, 32400] )
)
);
dt << New Column( "Category", Character );
For( i = 1, i <= N Rows( dt ), i++,
currID = dt:id[i];
If( i == 1,
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
);
If( i > 1,
If( dt:ID[i] != dt:ID[i - 1],
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
)
);
If( dt:Process Time[i] <= spawnTime,
dt:Category[i] = "Synthesis",
dt:Category[i] = "Processing";
);
);
該腳本假定數據按 ID 排序。 但是,如果為每個數據循環重新計算生成時間,則不必對錶進行排序。 它會減慢腳本速度,計算每個循環的 SpawnTime,但這可能是您想要做出的權衡。