excel - 当列号循环到第一个数字时,使用新 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 等。
解决方案
如果重复元素的数量始终相同,您只需将行号除以该数量并相应地索引 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。
推荐阅读
- html - 如何将按钮对齐到此文本区域的右侧
- angular6 - 模块没有导出成员“http”[2305]
- amazon-web-services - AWS 创建资源的触发器(标记资源创建)
- python - kNN中一个点的最远点
- typo3 - 如何为编辑器抑制 CE 中的 FAL 字段?
- ajax - Hibernate 使用旧的封闭 SessionImpl 而不是给定的 SessionImpl
- facebook - 从 iframe 登录 Facebook
- yii2 - 多对多关系 Yii2
- mysql - 我可以创建从单个 FK 到多个 PK 的外键约束吗
- swift - SFAuthorizationView - 斯威夫特