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

Excel公式/VBA:查找日期列后含通配符的下一个学生计划事件

行级免维护解决方案:查找当前日期后下一个计划事件

一、公式方案(无需VBA,自动适配行)

1. 基础下拉公式(适配单一行)

假设每行学生的日期列从C列开始,日期与事件按「日期列+事件列」成对排列(如C=日期、D=事件;E=日期、F=事件…),B3为当前追踪日期,在B4输入以下公式后直接下拉到所有学生行:

=IFERROR(TAKE(SORT(FILTER(CHOOSECOLS(C4:ZZ4, SEQUENCE(,COLUMNS(C4:ZZ4)/2,2,2)), CHOOSECOLS(C4:ZZ4, SEQUENCE(,COLUMNS(C4:ZZ4)/2,1,2))>B$3), 1, TRUE), 1), "")
  • 逻辑:提取该行所有事件列,筛选出对应日期大于B3的记录,按日期升序排序后取第一个事件
  • 优势:新增/删除学生行时,只需下拉公式即可,无需修改公式内容

2. 动态数组溢出公式(自动填充所有行)

若使用Excel 365/2021支持动态数组,在B4输入以下公式,会自动溢出填充到所有学生行,新增学生行时只需调整公式中的行范围(如B4:B100):

=BYROW(B4:B100, LAMBDA(r, IFERROR(TAKE(SORT(FILTER(CHOOSECOLS(OFFSET(r,0,1), SEQUENCE(,COLUMNS(OFFSET(r,0,1))/2,2,2)), CHOOSECOLS(OFFSET(r,0,1), SEQUENCE(,COLUMNS(OFFSET(r,0,1))/2,1,2))>B$3), 1, TRUE), 1), "")))

3. 结构化表格优化(完全免维护)

将学生数据转换为Excel结构化表格(选中数据→按Ctrl+T),此时公式会自动扩展到新添加的行:

  1. 将基础下拉公式输入到表格的「下一个事件」列
  2. 新增学生行时,表格自动扩展,公式自动继承到新行

二、VBA自定义函数方案(灵活适配复杂结构)

若你的日期/事件列结构不固定,可编写自定义函数,在单元格中直接调用:

  1. 按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Function NextEvent(currentDate As Date, studentRow As Range) As String
    Dim lastCol As Integer
    Dim i As Integer
    
    ' 获取该行最后一列的位置
    lastCol = studentRow.Cells(1, studentRow.Columns.Count).End(xlToLeft).Column
    
    ' 遍历所有日期列(假设日期在奇数列,事件在相邻偶数列,从C列开始)
    For i = 3 To lastCol Step 2
        ' 跳过空日期
        If IsDate(studentRow.Cells(1, i).Value) Then
            If studentRow.Cells(1, i).Value > currentDate Then
                NextEvent = studentRow.Cells(1, i + 1).Value
                Exit Function
            End If
        End If
    Next i
    
    ' 无符合条件事件时返回空
    NextEvent = ""
End Function
  1. 返回Excel,在B4输入公式并下拉:
=NextEvent(B$3, A4:ZZ4)
  • 可根据实际结构修改代码中的列起始位置(i=3对应C列)或遍历规则
  • 新增/删除学生行时,直接下拉公式即可,无需修改VBA代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:13:27