Excel 根据分类及组内序号进行编码

例题描述和简单分析

Excel 记录课程数据,未排序,部分如下:

A B C
1 Course Date Time
2 Word 1-Sep-20 9:00
3 Word 1-Sep-20 9:00
4 PowerPoint 1-Sep-20 9:00
5 Word 1-Sep-20 12:00
6 PowerPoint 1-Sep-20 12:00
7 Excel 1-Sep-20 12:00
8 Word 1-Sep-20 12:00

现在要新增一个编码列 Batch ID,使 Course\Date\Time 相同的记录 Batch ID 也相同。编码规则是:Course 的前 3 个字母 + 序号。数据按 Course 分大组后,每大组数据再按 Date 和 Time 分小组,编码中的序号即大组内各小组的序号。

A B C D
1 Course Date Time Batch ID
2 Word 1-Sep-20 9:00 Wor001
3 Word 1-Sep-20 9:00 Wor001
4 PowerPoint 1-Sep-20 9:00 Pow001
5 Word 1-Sep-20 12:00 Wor002
6 PowerPoint 1-Sep-20 12:00 Pow002
7 Excel 1-Sep-20 12:00 Exc001
8 Word 1-Sep-20 12:00 Wor002

上面涉及多层分组后的计算,以及组内序号的使用。

解法及简要说明

使用 Excel 插件 SPL XLL

在空白单元格写入公式:

=spl("=(t=E(?).group(Course).(~.group(Date,Time)),t.conj(~.news(~;Course,Date,Time,left(Course,3)/string(t.~.#,""000""):'Batch ID')))",A1:C8)

如图:

..

简要说明:

按Course分组,每组再按Date、Time进行第二层分组。

在大组内先计算各小组,按规则生成新列Batch ID,再合并小组,最后合并大组。其中A2.~.#表示每个小组在大组内的编号。

上述算法可生成符合要求的 Batch ID,但记录顺序发生了变化,如果想保持原序,可在分组前新增行号列,合并后再按行号列排序。

相关推荐

  1. 天线根据什么进行分类

    2024-05-12 20:32:04       71 阅读
  2. Vue3 对于嵌Iframe进行缓存

    2024-05-12 20:32:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 20:32:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 20:32:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 20:32:04       82 阅读
  4. Python语言-面向对象

    2024-05-12 20:32:04       91 阅读

热门阅读

  1. C++进阶——浅谈隐式转化

    2024-05-12 20:32:04       32 阅读
  2. 简述Redis过期策略及内存淘汰机制

    2024-05-12 20:32:04       35 阅读
  3. golang中三种线程安全的MAP

    2024-05-12 20:32:04       32 阅读
  4. SQL多表查询

    2024-05-12 20:32:04       29 阅读
  5. c++ 和c回调混合的一种实现

    2024-05-12 20:32:04       28 阅读
  6. Liunx软件包管理(上)

    2024-05-12 20:32:04       22 阅读
  7. 前端手写练习题及概念加深

    2024-05-12 20:32:04       29 阅读
  8. pip opencv-python其一失败原因解决方案

    2024-05-12 20:32:04       28 阅读
  9. C#中的隐式类型转换和显式类型转换

    2024-05-12 20:32:04       37 阅读