通过另一列值创建具有分配值的新列我有一列有日期,并且想创建一个新列,需要通过判断另一列唯一日期来分配 {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 (或时间)列中的值保持不变,那么计数器列就会保持不变,但是当它切换时,计数器列会增加 1。
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