別の列値によって割り当てられた値で新しい列を作成します日付の列があり、新しい列を作成したいのですが、別の列の一意の日付を判断して {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

Re: 別の列値によって割り当てられた値で新しい列を作成しますわずかに異なるアプローチです。文字は 26 文字しかないため使用していません。また、多くの場合、より多くのカテゴリがあります。
:ID (または時間) 列の値が同じままである限り、カウンター列は同じままですが、切り替えるとカウンター列が 1 つ上がります。
If( Row() == 1,
1,
If( :ID == Lag( :ID, 1 ),
Lag( :counter, 1 ),
Lag( :counter, 1 ) + 1
)
)
これらのネストされた If ステートメントは、見方によっては非常に便利な場合もあれば、巨大なモンスターになる場合もあります。
乾杯、
B
Re: 別の列値によって割り当てられた値で新しい列を作成しますやあ、
これは、時間値が実際に時間としてコード化されている(文字ではなく)と仮定して、組み込み関数のみを使用する可能な解決策です。
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