如何在Excel中为同一Check值添加递增的Instance序号列
为支票号数据集添加实例计数列
原始数据
| Check |
|---|
| 111 |
| 111 |
| 111 |
| 222 |
| 222 |
预期输出
| Check | Instance |
|---|---|
| 111 | 1 |
| 111 | 2 |
| 111 | 3 |
| 222 | 1 |
| 222 | 2 |
解法1:Excel实现
在空白列(如B列)的第一个数据行(B2)输入以下公式,下拉填充至所有行即可:
=COUNTIF($A$2:A2, A2)
$A$2固定统计起始位置,A2随下拉扩展统计范围,最终实现对每个Check值从第一行到当前行的累计计数。
解法2:Python Pandas实现
通过分组累计计数生成目标列:
import pandas as pd # 构造或加载原始数据 df = pd.DataFrame({'Check': [111, 111, 111, 222, 222]}) # 为每组Check生成1-based的实例序号 df['Instance'] = df.groupby('Check').cumcount() + 1 print(df)
解法3:SQL实现
利用窗口函数按支票号分组并生成序号:
SELECT Check, ROW_NUMBER() OVER (PARTITION BY Check ORDER BY (SELECT NULL)) AS Instance FROM checks;
PARTITION BY Check按支票号分组,ROW_NUMBER()为每组内的行生成递增序号;ORDER BY (SELECT NULL)用于保留原始数据顺序,若有特定排序需求,可替换为实际字段(如交易时间戳)。
内容的提问来源于stack exchange,提问作者Rohit Pandey
相关产品推荐
相关产品推荐

