两个表格在同一分类下按位置对齐
例题描述
在 Excel 中有一数据表,在字段 Header1 中存储了一些索引号,但这个索引号可能有重复值,就像下图中红框所示有两个 101,初始表格如下:
现在需要根据一份指定的参数序列,按照参数顺序来查找源表中相应的记录,查找规则为根据某个索引号的个数跟源表的个数顺次对应,源表没有时,查找结果为空;如果有则按源表顺序依次找到记录;然后将这些记录的 Header3,Header4,Header7 的结果取出。待查找的目标索引号如下图:
期望的结果如下,其中红框部分为查找规则的描述:
实现步骤
1. 打开集算器,新建文件,并将 Excel 中的数据区域 A1:G9 复制到集算器中的 A1 格,以及 Excel 区域 A12:A21 复制到集算器的 B1。
2. 编写处理代码,代码以及含义如下:
A |
B |
|
1 |
……(从 Excel 粘贴的数据 ) |
……(从 Excel 粘贴的数据 ) |
2 |
=A1.import@t() |
=B1.import@t() |
3 |
=A2.group(Header1) |
|
4 |
=A3.conj(~.derive(#1/"_"/#:ID)) |
|
5 |
=B2.derive(#:Index) |
|
6 |
=A5.group(#1) |
|
7 |
=A6.conj(~.derive(#1/"_"/#:ID)) |
|
8 |
=A7.sort(Index) |
|
9 |
=A4.align(A8:ID,ID) |
|
10 |
=A9.new(Header3:H3,Header4:H4,Header7:H7) |
A2 将 A1 格中的数据导入为序表。
B2 将 B1 格中的数据导入为序表。
A3 由于需要根据 Header1 的顺序依次查找,所以先按 Header1 分组,方便编号。
A4 为分好组的序号拼上顺序号,生成唯一号 ID 字段。
A5 需要对查找参数做同样的 ID 字段拼接。为了拼完 ID 后能恢复原序,添加顺序号 Index。
A6A7 同理拼上 ID 字段。
A8 将拼完 ID 后的表按 Index 恢复为原序。
A9 将 A4 表跟 A8 中的参数按照 ID 对齐。
A10 将对齐后的结果,取出指定字段。
3. 运行代码后,将 A10 格的内容复制,并粘贴到 Excel 的 B13。
https://stackoverflow.com/questions/63804941/match-more-than-entry-according-to-the-occurrence
【附件】 data.zip
英文版