Excel 识别数据层次后转换成表格

某列数据可分为 3 层,第 1 层是字符串,第 2 层是日期,第 3 层是时间:


A

1

NAME1

2

2024-06-03

3

04:06:12

4

04:09:23

5

08:09:23

6

12:09:23

7

17:02:23

8

2024-06-02

9

04:06:12

10

04:09:23

11

08:09:23

12

NAME2

13

2024-06-03

14

04:06:12

15

04:09:23

16

2024-06-02

17

12:09:23

18

17:02:23

需要正确识别三层数据,并转为规范的表格:


D

E

F

1

NAME1

2024-06-03

04:06:12

2

NAME1

2024-06-03

04:09:23

3

NAME1

2024-06-03

08:09:23

4

NAME1

2024-06-03

12:09:23

5

NAME1

2024-06-03

17:02:23

6

NAME1

2024-06-02

04:06:12

7

NAME1

2024-06-02

04:09:23

8

NAME1

2024-06-02

08:09:23

9

NAME2

2024-06-03

04:06:12

10

NAME2

2024-06-03

04:09:23

11

NAME2

2024-06-02

12:09:23

12

NAME2

2024-06-02

17:02:23

使用 SPL XLL,输入公式:

=spl("=E@1(?).(if(ifstring(~):s=~, if(ifdate(E(~))):d=~; [s,d,~])).select(ifa(~))",A1:A18)

spl返回的日期类型为整数形式,需用 Excel 的 "format cells" 功能(或 spl 的 E 函数)格式化为易读形式,时间类型同样处理。

Picture1png

函数 E 可转换 Excel 的日期时间类型,E@1 将多层序列转为单层。~ 表示当前成员。if 函数从左到右依次判断真假并执行表达式,最后执行缺省表达式。ifa 判断变量是否为序列。

https://www.reddit.com/r/excel/comments/1d8djn0/namedatetime_in_single_column/