Google Sheets计算列中当前与同值上一单元格的间隔行数
解决Google Sheet员工班次距上次天数计算问题
原始数据表格
| 日期 | 星期 | 员工 |
|---|---|---|
| 10/1/2023 | Sunday | Smith |
| 10/2/2023 | Monday | Baker |
| 10/3/2023 | Tuesday | Johnson |
| 10/4/2023 | Wednesday | Smith |
| 10/5/2023 | Thursday | Johnson |
| 10/6/2023 | Friday | Smith |
| 10/7/2023 | Saturday | Baker |
| 10/8/2023 | Sunday | Johnson |
| 10/9/2023 | Monday | Johnson |
| 10/10/2023 | Tuesday | Smith |
| 10/11/2023 | Wednesday | Baker |
| 10/12/2023 | Thursday | Baker |
| 10/13/2023 | Friday | Johnson |
实现步骤
- 在表格右侧插入新列(比如D列),在D1单元格输入标题
距上次班次天数。 - 在D2单元格输入以下公式,然后下拉填充到所有行:
=IF(COUNTIF($C$1:C1,C2)=1, 0, A2-LOOKUP(2, 1/($C$1:C1=C2), $A$1:A1))
公式说明
COUNTIF($C$1:C1,C2)=1:判断当前员工在之前的记录中是否是首次出现,若是则返回0。LOOKUP(2, 1/($C$1:C1=C2), $A$1:A1):定位当前员工上一次排班的日期——通过生成匹配数组,找到最后一次出现该员工时对应的日期。A2-...:用当前班次日期减去上一次排班日期,得到间隔天数。
验证结果
计算后关键行完全符合需求:
- 10/1/2023的Smith:首次出现,值为0
- 10/4/2023的Smith:10/4 - 10/1 = 3,值为3
- 10/2/2023的Baker:首次出现,值为0
- 10/7/2023的Baker:10/7 - 10/2 = 5,值为5
内容的提问来源于stack exchange,提问作者Dylan Russell
相关产品推荐
相关产品推荐

