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

Excel VBA开发需求:生成带年份的唯一月份序列并实现日期递增

扩展Excel VBA Worksheet_Change事件功能

原始代码实现了修改P3单元格时,提取Q列的唯一月份名称并输出到R列。以下是添加了两项扩展功能后的完整代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Dim v As Variant
    Dim c As Variant
    Dim yearVal As Integer
    Dim i As Integer
    Dim startDate As Date
    Dim countDays As Integer
    
    Set KeyCells = Range("P3")
    
    ' 仅当修改的是P3单元格时执行逻辑
    If Not Application.Intersect(KeyCells, Target) Is Nothing Then
        ' 关闭事件触发,避免循环调用
        Application.EnableEvents = False
        
        ' 获取Q列的所有数据(从Q3到最后一行非空单元格)
        v = Range("Q3", Range("Q" & Rows.Count).End(xlUp)).Value
        
        ' 提取P3单元格的年份
        yearVal = Year(Range("P3").Value)
        
        ' 1. 提取Q列唯一月份到R列,同时在S列生成带年份的完整月份格式
        With CreateObject("Scripting.Dictionary")
            For Each c In v
                .Item(c) = 1
            Next c
            ' 输出唯一月份到R列
            Range("R3").Resize(.Count) = Application.Transpose(.Keys)
            ' 生成带年份的月份格式到S列
            For i = 1 To .Count
                Range("S" & 2 + i).Value = yearVal & "年" & .Keys()(i - 1)
            Next i
        End With
        
        ' 2. 根据P16的数值,从P3日期开始逐次增加28天
        startDate = Range("P3").Value
        countDays = Range("P16").Value
        ' 清空之前的结果(输出列默认从T3开始,可自行调整)
        Range("T3", Range("T" & Rows.Count).End(xlUp)).ClearContents
        For i = 0 To countDays - 1
            Range("T" & 3 + i).Value = startDate + i * 28
            ' 设置日期显示格式,可按需修改
            Range("T" & 3 + i).NumberFormat = "yyyy/m/d"
        Next i
        
        ' 重新开启事件触发
        Application.EnableEvents = True
        
        MsgBox "P3单元格已更新,相关结果已生成。"
    End If
End Sub

功能说明:

  • 扩展功能1:提取Q列唯一月份到R列后,对应S列会生成年份+月份的完整格式(比如P3年份为2024,R列是"三月",S列则为"2024年三月")
  • 扩展功能2:以P3的日期为起始点,按照P16的数值作为生成次数,逐次叠加28天,结果输出到T列(可自行修改输出列的标识),同时设置了清晰的日期显示格式

注意:代码中加入了Application.EnableEvents的开关,防止修改单元格时重复触发事件导致报错。如果需要调整输出列位置,直接修改代码中对应的列字母即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:55:24