标题可能会令人困惑。长话短说,我引用sheet1 中特定列中的日期与sheet2 中日历上的日期进行比较。这是从sheet1返回相关信息。目前的公式如下: =IF(COUNTIF("SHEET1"!J:J,A4)=1,INDEX('SHEET1'!G:G,MATCH(A4,"SHEET1"!J:J,0)),"")
sheet1 的日期位于 J 列中,该单元格需要显示sheet1 列 G 中的相应数据。 我的问题源于重复的日期。 我在sheet1中添加了一个隐藏行#,从'sheet1'A2开始。 如何更改此公式以仅返回最低行#中的匹配数据?
我使用的是Excel 2016。截图例如:
这是我希望实现的示例:
表1:
A 栏 | B 栏 | C 栏 |
---|---|---|
1 | 2024 年 1 月 1 日 | 数据1 |
2 | 2024 年 1 月 1 日 | 数据2 |
3 | 2024 年 1 月 2 日 | 数据3 |
4 | 2024 年 1 月 2 日 | 数据4 |
表2:
2024 年 1 月 1 日 | 2024 年 1 月 2 日 |
---|---|
数据1 | 数据3 |
数据2 | 数据4 |
2016年,可以使用非精确匹配来得到最终结果。这是通过 Excel 在范围内搜索下一个较大值,然后回滚到上一个值来实现的。需要注意的是,您的范围必须按升序排序,这似乎是从您的屏幕截图中看出的。
这会修改公式的错误条件,以便在存在超过 1 个实例时搜索不精确的条件,但要进行测试以确认其按预期工作。同样,重要性来自于数据的排序方式。
=IF(COUNTIF("SHEET1"!J:J,A4)=1,INDEX('SHEET1'!G:G,MATCH(A4,"SHEET1"!J:J,0)),INDEX('SHEET1'!G:G,MATCH(A4,"SHEET1"!J:J,1))
您还可以避免使用 COUNTIF 来进一步简化公式:
INDEX('SHEET1'!G:G,MATCH(A4,"SHEET1"!J:J,1)
如果您使用 365,您可以使用
INDEX/MATCH
来定义搜索顺序,而不是使用 XLOOKUP
,这似乎会简化您的问题。
XLOOKUP 类似于您在定义搜索数组和返回数组时使用索引/匹配的方式,但它与您还可以定义“搜索模式”的其他查找不同,并且可以使用 -1 来获得它从最后到第一个搜索。这将返回该日期的最后一场比赛。如果没有匹配,它也会返回 0,您可以将其更改为您想要的任何结果。
=XLOOKUP( A4, J:J, G:G, 0, 0 , -1)