两个表格在同一分类下按位置对齐

例题描述

在 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