基於其他列的分組創建新列大家好,
我正在嘗試創建一個新列“Status”,它將根據以下規範返回“Active”或“Replaced”(附有“Status”列的表格部分作為預期結果的說明)。
每個 TOOL 和 Site 都可以在一段時間內替換不同的 Sub_Tool,並使用其時間戳運行多個單元。 特定工具和站點的最新 Sub_Tool 應該在狀態欄上收到 Active,所有以前用於該工具和站點的 Sub_Tool 應該收到 Replaced。
正如附加的示例一樣,相同的 Sub_Tool 可能會隨著時間的推移重複出現,但只有在最後一次運行時才應標記為活動。
真實文件有很多工具,每個工具都有很多站點,因此需要強大的編碼。
非常感謝您的幫助。
回复:根據其他列的分組創建新列感謝您提供更完整的測試文件以及您對我的初始代碼的測試。
這是格式的新版本
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :SITE != Lag( :SITE ) | Row() == N Rows( Current Data Table() ),
TargetValue = :SUB_TOOL[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 1, i >= 1, i--,
If( :SUB_TOOL[i] == TargetValue,
:Active2[i] = "Active",
Break()
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
您需要將“Active2”代碼中的列引用更改為您為該列提供的列名。
現在我要問你的問題是:
您了解公式的工作原理嗎?
如果沒有,您需要研究代碼並提出有關代碼的問題,以便理解它,並可以在將來進行必要的更改。
回复:根據其他列的分組創建新列感謝您花時間解決此問題,建議的腳本會對創建的列 Sub_Tool_Status 產生以下錯誤意圖:
1. 最近的行值產生替換(附加文件第 91 行標記為黃色)
2.最近一行是空的(附件最後一行)
2.何時進行多次替換,只有替換前的最後一行產生替換,並且不會更新前面的行(附件中標有兩個綠色陰影的文件)
回复:根據其他列的分組創建新列這是可能計算新列的幾種方法之一。只需創建一個新的字符列,將以下公式粘貼到新列中,然後將對“Active2”的引用更改為您創建的新列的名稱。
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :Site != Lag( :Site ) | Row() == N Rows( Current Data Table() ),
TargetValue = :Sub_Tool[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 2, i >= 1, i--,
If( :Sub_Tool[i] == TargetValue,
:Active2[i] = "Active",
:Active2[i] = "Replaced";
Break();
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
回复:根據其他列的分組創建新列你好,
原始表將有許多其他列,我將在這些列上使用 Sub_Tool 計算統計信息,因此不僅最後一行需要標記為 Acitve,而且最新的 Sub_Tool 運行的整個批次都需要標記為 Acitve。 是的,我需要找出最後一個 SubTool 用於工具和站點的內容,然後將所有行標記為活動回到 SubTool 更改時。
回复:根據其他列的分組創建新列根據我對您的定義的閱讀,我可以想出第 36 行被視為活動,但除了看到第 28 行到第 35 行具有保存 SubTool 值外,我不明白為什麼這些行應標記為活動。
或者,您想要做的是找出最後一個 SubTool 用於工具和站點的簡單問題,然後將所有行標記為活動回到 SubTool 更改時?????
我很困惑