You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据给定单元格索引匹配其上方符合条件的目标字符串

B7单元格向上匹配首个October开头日期的实现方案

现有日程表如下,已知Alice的位置在单元格B7:
日程表示例
需求为从B7出发,向上查找该列中第一个以October开头的单元格内容作为匹配日期,具体实现方法如下:


方案1:Excel/Google Sheets 公式方案(无需代码)

如果是单次临时查询,直接在目标单元格输入对应公式即可:

  • 若B列日期为文本格式,输入如下数组公式:
    =LOOKUP(2,1/(LEFT(B$1:B7,7)="October"),B$1:B7)
    
    Excel环境下输入完成后需要按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函数,使用更便捷:

  1. 按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
  1. 回到表格,任意单元格输入=GetNearestOctoberAbove(B7)即可直接得到结果。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:18:03