网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月24日漏签0天
vba吧 关注:17,099贴子:66,977
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 5回复贴,共1页
<<返回vba吧
>0< 加载中...

有偿请高手帮写个vba

  • 只看楼主
  • 收藏

  • 回复
  • 前方高能哈
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
说明:请高手帮写个vba,根据B列判断移植或剪枝对应规则计算D列树苗每周期移植和剪枝日期以及E列剩余天数,
本人新手小白,拜托了,无比感谢!
移植规则为按种植日期算第6年移植一次,然后第十年起每年移植一次,
剪枝规则为按种植日期算每年剪枝一次,然后第五年后半年剪枝一次,
求出D列为到期日,定为该月的最后一天,再求出E列为剩余天数,则E列减今天日期算出或用别的方式算出
本人v,csliumu


  • 烟雨江南ooo
  • 自成一派
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Sub 计算移剪日期和剩余天数()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim 种植日期 As Date
Dim 移剪到期日 As Date
Dim 剩余天数 As Long
Dim 今天日期 As Date
' 设置当前工作表
Set ws = ThisWorkbook.Worksheets("工作表1")
' 获取今天的日期
今天日期 = Date
' 获取数据的最后一行
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 从第4行开始遍历数据行
For i = 4 To lastRow
' 先判断种植日期单元格是否为空
If IsDate(ws.Cells(i, "C").Value) Then
种植日期 = ws.Cells(i, "C").Value
' 根据B列判断是移植还是剪枝
Select Case Trim(ws.Cells(i, "B").Value)
Case "移植"
' 移植规则:第6年移植一次,第10年起每年移植
If DateDiff("yyyy", 种植日期, 今天日期) < 6 Then
' 未满6年,到期日为种植日期+6年,且为该月最后一天
移剪到期日 = DateSerial(Year(种植日期) + 6, Month(种植日期) + 1, 0)
ElseIf DateDiff("yyyy", 种植日期, 今天日期) < 10 Then
' 6-10年之间,到期日为种植日期+10年,且为该月最后一天
移剪到期日 = DateSerial(Year(种植日期) + 10, Month(种植日期) + 1, 0)
Else
' 满10年,到期日为今年的种植月份最后一天
移剪到期日 = DateSerial(Year(今天日期), Month(种植日期) + 1, 0)
' 如果今年的日期已过,则自动顺延到明年
If 移剪到期日 < 今天日期 Then
移剪到期日 = DateSerial(Year(今天日期) + 1, Month(种植日期) + 1, 0)
End If
End If
Case "剪枝"
' 剪枝规则:前5年每年一次,第5年后半年一次
If DateDiff("yyyy", 种植日期, 今天日期) < 5 Then
' 未满5年,到期日为今年的种植月份最后一天
移剪到期日 = DateSerial(Year(今天日期), Month(种植日期) + 1, 0)
' 如果今年的日期已过,则自动顺延到明年
If 移剪到期日 < 今天日期 Then
移剪到期日 = DateSerial(Year(今天日期) + 1, Month(种植日期) + 1, 0)
End If
Else
' 满5年,半年剪一次
If Month(今天日期)


2026-04-24 01:12:11
广告
不感兴趣
开通SVIP免广告
  • 烟雨江南ooo
  • 自成一派
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
' 满5年,半年剪一次
If Month(今天日期) <= Month(种植日期) Then
' 上半年:到期日为今年种植月份最后一天
移剪到期日 = DateSerial(Year(今天日期), Month(种植日期) + 1, 0)
Else
' 下半年:到期日为今年种植月份+6个月的最后一天
移剪到期日 = DateSerial(Year(今天日期), Month(种植日期) + 7, 0)
' 若计算出的月份超过12,自动跨年
If Month(移剪到期日) > 12 Then
移剪到期日 = DateSerial(Year(移剪到期日) + 1, Month(移剪到期日) - 12, 0)
End If
End If
End If
End Select
' 写入移剪到期日到D列
网页链接 (i, "D").Value = 移剪到期日
' 计算剩余天数并写入E列
剩余天数 = DateDiff("d", 今天日期, 移剪到期日)
ws.Cells(i, "E").Value = 剩余天数
End If
Next i
' 格式化日期列和数字列
ws.Columns("D").NumberFormat = "yyyy/m/d"
ws.Columns("E").NumberFormat = "0"
MsgBox "计算完成!", vbInformation
End Sub


  • 陈小伟道法自然
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
举手之劳不要钱


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回vba吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示