我有一个电子表格,其中一列包含人员的邮政编码,另一列包含分配给他们的 ID。
我想按照 ID 列对此工作表进行排序,但也希望将所有具有相同邮政编码的人分组在一起。
接下来应出现哪一行的优先级列表如下。
- 具有与前一个条目相同邮政编码的下一个最低 ID。
- 下一个最小 ID
作为一种算法实现,这将相当简单,但我不知道如何使用 Excel 选项来做到这一点。
我尝试过先按邮政编码排序,然后按 ID 排序,但失败了,但这只会将邮政编码分组,并正确排序每个邮政编码的 ID。它不会将第一个 ID 放在最上面,而是将第一个邮政编码放在最上面。
我也尝试过为每个邮政编码创建组,但如果我按 ID 排序,这些组就不会聚在一起。
一些示例数据如下:
邮政编码 TR-002 7586 KO TR-004 7896 吉隆坡 TR-007 7586 KO TR-012 7493 KP TR-088 6868 KK TR-101 7493 KP
我想按以下方式排序:
邮政编码 TR-002 7586 KO TR-007 7586 KO TR-004 7896 吉隆坡 TR-012 7493 KP TR-101 7493 KP TR-088 6868 KK
答案1
我自己找到了解决方案。
首先按 ID 排序,然后我添加了一个具有以下公式的新列:
=INDEX($B$1:$B$278,MIN(IF($I$2:$I$278=$I4,ROW($I$2:$I$278))))
根据需要替换边界。
它的工作原理是,它获取具有相同邮政编码的所有行的列表(IF 语句),然后获取其中最小的一行(具有最低 ID 的行)。这会将每个 ID 映射到具有相同邮政编码的最低 ID。
然后我按这个新列和 ID 列进行排序,数据就按照我想要的顺序排列了。
我采用 ROW 值然后使用 INDEX 将其转换回来的原因是我的 ID 可以包含非数字字符,而 MIN 函数不适用于这些字符。