Excel公式需求:计算距离上一次Ranch列TRUE值的天数
计算距离上一次Ranch列TRUE值的天数
嘿,我来帮你搞定这个需求!你要的是在表格里新增一列,自动计算距离上一次Ranch列出现TRUE的天数对吧?结合你给出的示例数据,我整理了适用于Excel和Google Sheets的两种实现方案:
先明确表格结构
假设你的数据从第1行表头开始:
- A列:
Date(日期) - B列:
Day(星期) - C列:
Ranch(TRUE/FALSE标记) - D列:新增的
Days since last Ranch(目标列)
分步实现
1. 第一行数据(D2单元格)
按照你的要求,第一行如果是FALSE就硬编码0,直接在D2输入:
0
2. 从第三行开始的通用公式
方案一:支持XLOOKUP的版本(Excel 2021+/Google Sheets)
在D3单元格输入以下公式,然后下拉填充到所有行:
=IF(C3=TRUE, 0, A3 - XLOOKUP(TRUE, $C$2:C2, $A$2:A2, 0, 0, -1))
公式逻辑说明:
- 先判断当前行的
Ranch值是否为TRUE,如果是直接返回0; - 如果是
FALSE,用XLOOKUP从当前行往上(倒序查找)找到最近的TRUE值,返回对应的日期; - 用当前行的日期减去找到的最近TRUE日期,得到间隔天数。
方案二:兼容旧版Excel的版本(无XLOOKUP)
如果你的Excel版本不支持XLOOKUP,用这个公式替代(同样在D3输入后下拉):
=IF(C3=TRUE,0,A3-LOOKUP(2,1/($C$2:C2=TRUE),$A$2:A2))
公式逻辑说明:
1/($C$2:C2=TRUE)会把范围内的TRUE转换成1,FALSE转换成错误值;LOOKUP(2, ...)会忽略错误值,找到最后一个1对应的日期(也就是最近的TRUE日期);- 最后用当前日期减去该日期得到间隔天数,当前行是TRUE时直接返回
0。
验证示例数据
用你给出的测试数据验证,结果完全符合预期:
| Date | Day | Ranch | Days since last Ranch |
|---|---|---|---|
| 25/05/2018 | Friday | FALSE | 0(硬编码) |
| 26/05/2018 | Saturday | TRUE | 0 |
| 27/05/2018 | Sunday | FALSE | 1 |
| 28/05/2018 | Monday | FALSE | 2 |
| 29/05/2018 | Tuesday | TRUE | 0 |
| 30/05/2018 | Wednesday | FALSE | 1 |
内容的提问来源于stack exchange,提问作者TheIronKnuckle
相关产品推荐
相关产品推荐

