通過另一個列值創建具有指定值的新列我有一個帶有日期的列,想創建一個新列,需要通過判斷另一列的唯一日期來分配 {A, B, C, D, E} 。
通過“rundate”單元格值判斷(參考下圖),請幫助如何生成腳本:
1. 分配新列Cell[1] == "A", i++,如果"rundate" Cell[i] = "rundate" Cell[i++],保持分配新列Cell[i++] == "A"。
2. 如果"rundate" Cell[i] < "rundate" Cell[i++],意味著日期時間改變了,需要分配新列Cell[i++]=="B"。
3. 如果“rundate”Cell[i] = “rundate”Cell[i++],保持分配新列Cell[i++]==“B”。
4. 如果"rundate" Cell[i] < "rundate" Cell[i++],表示日期時間又變了,需要賦值列Cell[i++]=="C"。
運行日期
2020 年 4 月 1 日 7:18
2020 年 4 月 1 日 7:18
2020 年 4 月 1 日 7:18
2020 年 4 月 1 日 7:47
2020 年 4 月 1 日 8:13
2020 年 4 月 1 日 8:13
2020 年 4 月 1 日 8:13
2020 年 4 月 1 日 8:13
2020 年 4 月 1 日 8:13
2020 年 4 月 1 日 8:43
2020 年 4 月 1 日 8:43
2020 年 4 月 1 日 8:43
2020 年 4 月 1 日 8:43
2020 年 4 月 1 日 8:43
2020 年 4 月 1 日 8:43
2020 年 4 月 1 日 8:43
2020 年 4 月 1 日 9:13

回复:通過另一個列值創建具有指定值的新列方法略有不同,我沒有使用字母,因為只有 26 個,而且我通常有更多的類別。
只要您的 :ID(或時間)列中的值保持不變,計數器列就會保持不變,但是當它切換時,計數器列會增加一個。
If( Row() == 1,
1,
If( :ID == Lag( :ID, 1 ),
Lag( :counter, 1 ),
Lag( :counter, 1 ) + 1
)
)
這些嵌套的 If 語句可以非常方便,也可以是巨大的怪物,這取決於你的觀點。
乾杯,
乙
回复:通過另一個列值創建具有指定值的新列你好,
這是一個可能的解決方案,它只使用內置函數,假設您的時間值實際上被編碼為時間(而不是字符)
If( Row() == 1,
"A",
If( :Column 1 == Lag( :Column 1, 1 ),
Lag( :New Column, 1 ),
Hex To Char( Char( Num( Hex( Lag( :New Column, 1 ) ) ) + 1 ) )
)
)
可能有更優雅的方法來實現這一點,但我不知道有一個函數可以輕鬆地將字符轉換為數字代碼並返回
此致,
TS