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

求助开发种植日历VBA功能:自动标记预期收获及行排序

种植日历VBA实现方案

功能说明

针对你提出的两个需求,以下是基于Excel VBA的具体实现代码,适配常规种植日历表格结构(可根据你的实际结构调整参数)。

假设表格结构(可自行调整)

  • A列:作物品种
  • B列:生长周期(单位:天,与日期列的列间隔对应)
  • C列及以后:日期列(每列对应一个时间节点,如一天/一周)
  • 收获状态列(示例为X列,即第24列):手动输入"H"标记已收获

VBA代码实现

将以下代码粘贴到对应种植日历工作表的代码模块中:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cycleDays As Integer
    Dim targetRow As Integer
    Dim targetCol As Integer
    Dim lastRow As Long
    Dim harvestCol As Integer ' 自定义收获状态列序号
    
    ' 关闭事件触发,避免循环执行
    Application.EnableEvents = False
    
    ' 1. 处理"P"输入:自动标记预期收获"E"
    If UCase(Target.Value) = "P" And Target.Column >= 3 Then ' 假设P从日期列(C列)开始输入
        targetRow = Target.Row
        targetCol = Target.Column
        ' 获取当前作物的生长周期(B列)
        cycleDays = Me.Cells(targetRow, 2).Value
        
        ' 仅在周期为有效正数时执行
        If IsNumeric(cycleDays) And cycleDays > 0 Then
            Me.Cells(targetRow, targetCol + cycleDays).Value = "E"
        End If
    End If
    
    ' 2. 处理"H"输入:将已收获行移至表格底部
    harvestCol = 24 ' 修改为你的收获状态列序号(如A=1,B=2...)
    If UCase(Target.Value) = "H" And Target.Column = harvestCol Then
        targetRow = Target.Row
        lastRow = Me.Cells(Me.Rows.Count, "A").End(xlUp).Row
        
        ' 跳过已在底部的行
        If targetRow <> lastRow Then
            Me.Rows(targetRow).Cut
            Me.Rows(lastRow + 1).Insert Shift:=xlDown
            Application.CutCopyMode = False ' 清空剪切板
        End If
    End If
    
    ' 恢复事件触发
    Application.EnableEvents = True
End Sub

使用步骤

  1. 打开你的Excel文件,按下Alt + F11打开VBA编辑器
  2. 在左侧「工程资源管理器」中找到目标工作表(如Sheet1(种植日历)),双击打开其代码窗口
  3. 粘贴上述代码,根据你的表格结构调整以下参数:
    • Target.Column >= 3:如果日期列不是从C列(第3列)开始,修改此处数字
    • Me.Cells(targetRow, 2).Value:如果生长周期不在B列,修改列序号
    • harvestCol = 24:修改为你用来输入"H"的列的序号
  4. 保存文件为*.xlsm格式(必须启用宏的工作簿才能运行代码)

注意事项

  • 生长周期列必须输入数字,否则"P"输入后无法自动标记"E"
  • 输入"P"/"H"不区分大小写,代码会自动统一转换为大写判断
  • 移动行时会完整保留原行的格式、公式和数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:05:12