条件#2:成本≥对应收入时查找目标日期行
解决Sheet1盈利日期匹配问题的Excel方案
我来帮你搞定这个公式问题!结合你的数据结构,我们可以用Excel的函数组合精准找到第一个满足「成本≥对应收入」的盈利日期,下面分两种场景给出方案:
方案1:用XLOOKUP(适合Excel 365/2021及以上版本,更简洁)
假设Sheet1的Profitability Date列从C2开始,在C2单元格输入以下公式,然后下拉填充即可:
=IFERROR(XLOOKUP(TRUE, INDEX(Sheet2!B:Z, MATCH(A2, Sheet2!A:A, 0), 0) <= B2, Sheet2!B1:Z1, "", 0, 1), "")
公式拆解:
MATCH(A2, Sheet2!A:A, 0):定位Sheet2中当前ID对应的行号INDEX(Sheet2!B:Z, MATCH结果, 0):提取该行所有的收入数据(这里的B:Z是日期列的范围,你可以根据实际数据调整为B:AA或其他)INDEX(...) <= B2:生成布尔数组,标记哪些收入值≤当前行的成本XLOOKUP(TRUE, ..., Sheet2!B1:Z1, "", 0, 1):找到第一个TRUE对应的Sheet2第一行日期,无匹配时返回空值IFERROR(..., ""):把无匹配时的错误值(如#N/A)转换成空单元格,更美观
方案2:用INDEX+MATCH组合(兼容旧版Excel)
如果你的Excel版本不支持XLOOKUP,用这个组合公式同样可以实现:
=IFERROR(INDEX(Sheet2!B1:Z1, MATCH(TRUE, INDEX(Sheet2!B:Z, MATCH(A2, Sheet2!A:A, 0), 0) <= B2, 0)), "")
公式拆解:
- 内层
MATCH(A2, Sheet2!A:A, 0):同样定位对应ID的行号 INDEX(Sheet2!B:Z, 行号, 0) <= B2:生成标记满足条件的布尔数组- 外层
MATCH(TRUE, ..., 0):找到第一个满足条件的列号 INDEX(Sheet2!B1:Z1, 列号):提取对应的日期值IFERROR:处理无匹配的情况,返回空值
注意事项
- 请根据Sheet2的实际日期列范围调整公式中的
B:Z和B1:Z1(比如日期列到AA列,就改成B:AA和B1:AA1) - 确保Sheet2的ID列无重复值,否则
MATCH会返回第一个匹配的行;如果有重复ID,需要额外添加区分条件 - 若需要找最后一个满足条件的日期,XLOOKUP方案把最后一个参数
1改成-1,INDEX+MATCH方案把外层MATCH的第三个参数0改成1即可
内容的提问来源于stack exchange,提问作者Anders Gustavsson
相关产品推荐
相关产品推荐

