如何根据给定单元格索引匹配其上方符合条件的目标字符串
B7单元格向上匹配首个October开头日期的实现方案
现有日程表如下,已知Alice的位置在单元格B7:
需求为从B7出发,向上查找该列中第一个以October开头的单元格内容作为匹配日期,具体实现方法如下:
方案1:Excel/Google Sheets 公式方案(无需代码)
如果是单次临时查询,直接在目标单元格输入对应公式即可:
- 若B列日期为文本格式,输入如下数组公式:
Excel环境下输入完成后需要按=LOOKUP(2,1/(LEFT(B$1:B7,7)="October"),B$1:B7)Ctrl+Shift+Enter确认数组公式生效,Google Sheets可直接回车确认。 - 若B列日期为系统日期格式,使用如下调整后的公式:
=LOOKUP(2,1/(LEFT(TEXT(B$1:B7,"mmmm"),7)="October"),B$1:B7)
公式逻辑说明:
- 限定查询范围为B列第1行到B7单元格,匹配范围内所有单元格内容前7位和
October长度一致的内容 - 符合条件的行返回数值1,不符合返回错误值,LOOKUP函数自动忽略错误值,匹配到最后一个符合条件的单元格,即B7上方最近的匹配日期。
方案2:VBA自定义函数方案(适合批量处理场景)
如果需要频繁处理同类需求,可以自定义VBA函数,使用更便捷:
- 按
Alt+F11打开VBA编辑器,插入新模块,粘贴如下代码:
Function GetNearestOctoberAbove(targetCell As Range) As Variant Dim currentRow As Long ' 从目标单元格上一行开始向上遍历同列内容 For currentRow = targetCell.Row - 1 To 1 Step -1 If Left(Cells(currentRow, targetCell.Column).Value Like "October*") Then GetNearestOctoberAbove = Cells(currentRow, targetCell.Column).Value Exit Function End If Next currentRow ' 无匹配内容返回空 GetNearestOctoberAbove = "" End Function
- 回到表格,任意单元格输入
=GetNearestOctoberAbove(B7)即可直接得到结果。
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

