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

如何用VBA查找列中最新日期并提取右侧单元格信息

实现指定列查找最新日期并提取右侧单元格信息的VBA宏

需求明确

要在指定列里找到最新(数值最大)的日期所在行,然后提取该行右侧单元格的内容——比如你示例里2023年1月1日对应的loginB,而且因为工作表各列日期用途不同,不能靠排序来解决,得用宏实现。

VBA代码实现

Sub GetLatestDateInfo()
    Dim targetColumn As Range
    Dim lastRow As Long
    Dim maxDate As Date
    Dim targetRow As Long
    Dim result As String
    
    ' 这里设置要查找的目标列和工作表,比如改成Columns("C")就是C列,Sheet1换成你的工作表名
    Set targetColumn = ThisWorkbook.Sheets("Sheet1").Columns("A")
    
    ' 获取目标列最后一行的行号,避免遍历空行
    lastRow = targetColumn.Cells(targetColumn.Rows.Count, 1).End(xlUp).Row
    
    ' 初始化最大日期为一个很早的日期,确保能被后续更大的日期覆盖
    maxDate = DateSerial(1900, 1, 1)
    
    ' 遍历目标列所有行,找出最大日期的行号
    For i = 1 To lastRow
        ' 先判断单元格内容是不是日期,避免非日期干扰
        If IsDate(targetColumn.Cells(i, 1).Value) Then
            If targetColumn.Cells(i, 1).Value > maxDate Then
                maxDate = targetColumn.Cells(i, 1).Value
                targetRow = i
            End If
        End If
    Next i
    
    ' 提取目标行右侧单元格的内容,Offset(0,1)是向右1列,要取第2列就改成Offset(0,2)
    result = targetColumn.Cells(targetRow, 1).Offset(0, 1).Value
    
    ' 弹窗显示结果,也可以注释掉这句,改成把结果写入指定单元格,比如下面这句
    MsgBox "最新日期" & maxDate & "对应的信息是:" & result
    ' ThisWorkbook.Sheets("Sheet1").Range("D1").Value = result
End Sub

代码调整说明

  • 目标列和工作表:直接改Set targetColumn那行里的Sheet1和Columns("A"),换成你实际要操作的工作表名称和列。
  • 右侧单元格位置:Offset(0,1)代表目标单元格向右偏移1列,要是需要提取右侧第3列,就改成Offset(0,3)。
  • 结果输出方式:示例用弹窗展示结果,你也可以把弹窗代码注释掉,启用下面的单元格写入代码,把结果放到指定位置。

使用步骤

  1. 打开你的Excel文件,按Alt + F11打开VBA编辑器。
  2. 在左侧的工程窗口里,右键点你要操作的工作表,选「插入」→「模块」。
  3. 把上面的代码粘贴到新建的模块窗口里。
  4. 根据你的实际需求调整代码里的参数。
  5. 按F5运行宏,或者回到Excel界面,通过「开发工具」→「宏」选择这个宏运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:50:17