答案1
这是一个不需要您预先对数据进行排序的公式。无论和列count
的顺序如何,列中的值始终是正确的。Email
Timestamp
公式
=LET(
_arr, A2:B10,
_seq, HSTACK(SEQUENCE(COUNTA(_arr)/2),_arr),
_sort, SORTBY(_seq,INDEX(_seq,,2),1,INDEX(_seq,,3),1),
_names, INDEX(_sort,,2),
_counters, TEXTSPLIT(TEXTJOIN(",",TRUE, MAP(UNIQUE(_names), LAMBDA(u,
TEXTJOIN(",",TRUE,SEQUENCE(COUNTA(FILTER(_names,_names=u))))))),,","),
FILTER(SORTBY(HSTACK(_sort,_counters),INDEX(_sort,,1),1),{0,0,0,1})
)
计数器(按当前排序顺序列出)
Email
按然后按排序Time
按顺序排序Test
并Time
Test
(升序)然后通过Time
(升序)
公式解释
下面的公式与上面的相同,但是_counters
变量以及最终FILTER
函数已分解为额外的步骤,以便于遵循。
Line Formula
----+------------------------------------------
1 | =LET(
2 | _arr, A2:B10,
3 | _seq, HSTACK(SEQUENCE(COUNTA(_arr)/2),_arr),
4 | _sort, SORTBY(_seq,INDEX(_seq,,2),1,INDEX(_seq,,3),1),
5 | _names, INDEX(_sort,,2),
6 | _counters, MAP(UNIQUE(_names), LAMBDA(u,
7 | TEXTJOIN(",",TRUE,SEQUENCE(COUNTA(FILTER(_names,_names=u)))))),
8 | _joined, TEXTJOIN(",",TRUE,_counters),
9 | _split, TEXTSPLIT(_joined,,","),
10 | _combined, HSTACK(_sort,_split),
11 | _storedsort, SORTBY(_combined, INDEX(_combined,,1),1),
12 | _countersonly, FILTER(_storedsort,{0,0,0,1}),
13 | _countersonly )
线 | 笔记 |
---|---|
1 | 使用 Excel让函数用于存储公式中的计算、值和定义名称。 |
2 | _arr: 存储初始Email 和Timestamp 数据 |
3 | _seq: 顺序函数用于获取数据的当前顺序,以便稍后恢复。 堆栈函数用于将其添加_arr 为第一列 |
4 | _sort: 排序方式函数允许使用以下方式通过电子邮件订购数据指数获取第二列_seq ,然后Timestamp 再次使用指数获取第三列_seq |
5 | _names: 用途指数获取第 2 列中的电子邮件列表_sort |
6 | _counters: 独特的获取来自的唯一电子邮件列表_names ,并将每个唯一的电子邮件传递到拉姆达函数使用地图LAMBDA 函数u 在其公式中用作映射值的占位符。 |
7 | _counters: (继续)每次映射一个值时,_names 都会针对该值进行过滤,并且筛选结果计算使用康塔然后该计数用于创建一个顺序数字以 1 为增量,从 #1 到康塔结果。最后,文本连接将数字序列组合为一个以逗号分隔的字符串,以避免嵌套数组错误。 |
8 | _joined: 文本连接再次用于将各个数字序列组合成一个以逗号分隔的长字符串,其中包含完整的顺序所有电子邮件地址。 |
9 | _split: 文本分割采用长逗号分隔的字符串,并使用每个逗号将其拆分到单个列上,以确定何时插入新行。 |
10 | _combined: 与第 3 行类似,堆栈再次用于合并_split 来自_sort |
11 | _storedsort: 排序方式Email 可以恢复和列的原始顺序,其中Timestamp 第一列_combined 是顺序创建于第 3 行 |
12 | _countersonly: 采用一种技术筛选允许使用0 跳过一列,使用 来显示一列,从而有选择地返回列。由于第 4 列相对于和列1 的原始排序顺序而言顺序正确,因此现在可以丢弃 1-3 列 ( )Email Timestamp {0,0,0,1} |
第 3 行:_seq
第 4 行:_sort
第 5 行:_names
第 6 至 7 行:_counters
第 8 行:_joined
第 9 行:_split
第 10 行:_combined
第 11 行:_storedsort
第 12 行:_countersonly
第 12 行:_countersonly
使用
sort by Email
(asc) 然后Time
(asc)