如何在Excel中实现类似SQL Lead/Lag函数的列值引用?
在Excel中实现类似SQL Lag函数的效果,获取上一项数据
假设你的原数据结构为:
- A列:序号
- B列:物品名称
- C列:价格
需要新增两列分别返回上一项物品名称和上一项价格,以下是几种实现方法:
方法一:基于序号匹配(适用于序号连续的场景)
- 上一项物品名称(如D2单元格):
=IF(A2=1,"",INDEX(B:B,A2-1)) - 上一项价格(如E2单元格):
=IF(A2=1,"",INDEX(C:C,A2-1))
输入公式后下拉填充至所有数据行,第一行因无前置数据显示空白。
方法二:OFFSET函数通用法(不依赖序号连续性)
如果序号不保证连续,可直接基于行位置获取上一行数据:
- 上一项物品名称(D2单元格):
=IF(ROW()=2,"",OFFSET(B2,-1,0)) - 上一项价格(E2单元格):
=IF(ROW()=2,"",OFFSET(C2,-1,0))
下拉填充即可,公式通过ROW()=2判断是否为数据首行(假设表头在第1行),首行显示空白。
方法三:Excel 365/2021动态数组法(无需手动下拉)
若使用支持动态数组的Excel版本,可一次性生成整列结果:
- 上一项物品名称:
=VSTACK("", B2:B6) - 上一项价格:
=VSTACK("", C2:C6)
注:B2:B6、C2:C6需替换为你实际的物品名称和价格数据范围,公式会自动生成对应结果,首行显示空白。
内容的提问来源于stack exchange,提问作者user13617491
相关产品推荐
相关产品推荐

