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,但记录顺序发生了变化,如果想保持原序,可在分组前新增行号列,合并后再按行号列排序。

相关推荐
Python大数据分析@2 小时前
python操作CSV和excel,如何来做?
开发语言·python·excel
John.liu_Test3 小时前
js下载excel示例demo
前端·javascript·excel
ruleslol5 小时前
VBA02-初识宏——EXCEL录像机
excel·vba
IT铺子5 小时前
制定Excel使用规范和指导,提升数据处理的效率和准确性,减少错误和数据丢失的风险
excel
是萝卜干呀5 小时前
Backend - Python 爬取网页数据并保存在Excel文件中
python·excel·table·xlwt·爬取网页数据
神奇夜光杯11 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
小c君tt12 小时前
MFC中Excel的导入以及使用步骤
c++·excel·mfc
一名技术极客14 小时前
Vue2 doc、excel、pdf、ppt、txt、图片以及视频等在线预览
pdf·powerpoint·excel·文件在线预览
用余生去守护14 小时前
【反射率】-- Lab 转换(excel)
excel
进击的六角龙14 小时前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel