首页 > 解决方案 > 当列号循环到第一个数字时,使用新 id 更改列 B

问题描述

我有一个需要跨两列映射的数字列表。A 列有一个数字列表,每 1400 条记录重复一次,例如。

一个 C
12 12
12 428
12 6
12
12
14
14
14
14
12
12
12
12
12
14
14
14

我需要根据 C 列的数据自动填充 B 列。

B 列应如下所示:

一个 C
12 12 12
12 12 428
12 12 6
12 12
12 12
14 12
14 12
14 12
14 12
12 428
12 428
12 428
12 428
12 428
14 428
14 428
14 428

有没有一个公式可以用来完成这个?C 列有多个记录,我需要映射到 A 列。每次 A 列“重复”时,在这种情况下,当 12 再次出现时,我希望 B 列填充下一个数字。在这种情况下,428 然后 6 等。

标签: excel

解决方案


如果重复元素的数量始终相同,您只需将行号除以该数量并相应地索引 C 列中的元素。

即您有12,12,12,12,12,14,14,14,14,14大小为 10 的序列。然后您可以对 B 列中的条目执行此操作:

=INDIRECT(ADDRESS(QUOTIENT(ROW()-ROW(B$1),N)+1,3))

ROW()是单元格的行值。我假设你的数字从单元格 A1 和 B1 开始,否则你需要ROW(B$1)用起始单元格替换。防止 1在$1您拖动列表时增加。然后,将该值与 N 相除,其中 N 是序列的大小,在您的情况下为 10。商为您提供除法的整数部分。对该数字您需要添加 1,因为 excel 从 1 而不是从 0 开始索引。然后您需要找到要放入 B 列中的值的正确地址的引用,这是通过 完成的ADDRESS(ROW_NUMBER,COLUMN_NUMBER)COLUMN_NUMBER这里是3,因为 C 是第三个字母。(如果您使用不同的列作为输入,请相应更改)这ROW_NUMBER是我们计算的数字。INDIRECT(ADDRESS)是一个函数,它将我们获得的地址的值放入ADDRESS函数中。

如果您的 12 和 14 序列始终具有相同的长度,这应该可以工作。否则,我建议你离开excel,开始使用一些编程语言,比如python。


推荐阅读