ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2095|回复: 12

[求助] 如何根据指定的日期范围列出所有日期行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-1-16 09:14 | 显示全部楼层 |阅读模式
老师好,

我想了解如何根据指定的日期范围列出所有日期行

详情请参老附件

附件中希望达到的效果是:

a1 单元格是可以调整的日期范围,根据 a1 单元格的日期范围,在 c 列列出所有符合条件的日期行

例如: a1 单元格我们选了 过去1天,那么 c 列就会列出 2020-01-15(因为今天是2020-01-16)

例如:a1 单元格我们选了 过去2天,那么 c 列就会依次列出
2020-01-14
2020-01-15

例如:a1 单元格我们选了 过去7天,那么 c 列就会依次列出
2020-01-09
2020-01-10
2020-01-11
2020-01-12
2020-01-13
2020-01-14
2020-01-15

依次类推

请问通过 vba 怎么做到这点

非常感谢老师的帮助

工作簿1.zip

8.15 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2020-1-16 09:22 | 显示全部楼层
我去,不是已经给了你示例代码了吗?你修改使用就好啦

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 09:29 | 显示全部楼层
microyip 发表于 2020-1-16 09:22
我去,不是已经给了你示例代码了吗?你修改使用就好啦

老师好,非常感谢老师帮助,因为前面的帖子是昨晚发的,早上还没有得到回复,所以我又开了一条帖子,又让老师看到了,谢谢老师

TA的精华主题

TA的得分主题

发表于 2020-1-16 09:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub test()
Dim i As Date
m = Val(Mid([a1], 3, Len([a1]) - 3))
Columns(3) = Empty
For i = Date - m To Date - m + m - 1
    n = n + 1
    Cells(n, 3) = i
Next i
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 09:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
3190496160 发表于 2020-1-16 09:33
Sub test()
Dim i As Date
m = Val(Mid([a1], 3, Len([a1]) - 3))

非常感谢老师提供帮助

TA的精华主题

TA的得分主题

发表于 2020-1-16 09:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Address = "$A$1" Then
  3.         Dim jg%, n%
  4.         Select Case Target.Value
  5.         Case Is = "过去1天": jg = -1
  6.         Case Is = "过去7天": jg = -7
  7.         Case Is = "过去15天": jg = -15
  8.         Case Is = "未来15天": jg = 15
  9.         End Select
  10.         
  11.         
  12.         ReDim a(1 To Abs(jg))
  13.         Dim t1 As Date, t2 As Date, t As Date
  14.         If jg < 0 Then
  15.             t1 = DateAdd("d", jg, Date): t2 = Date
  16.         Else
  17.             t1 = Date: t2 = DateAdd("d", jg, Date)
  18.         End If
  19.         For t = t1 To t2 - 1
  20.             n = n + 1: a(n) = t
  21.         Next
  22.         Range("C:C") = ""
  23.         Range("C1").Resize(Abs(jg), 1) = WorksheetFunction.Transpose(a)
  24.     End If
  25. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2020-1-16 09:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
工作簿.rar (12.74 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2020-1-16 10:08 | 显示全部楼层
借花献佛,用了老师的代码,加了一句。

Sub test()
    Dim dDate As Date, nI As Long, k
    dDate = Date
    k = Mid([a1], 3, 1)
    For nI = 1 To k
        Cells(nI, 3) = dDate - 8 + nI
    Next
End Sub

如何根据指定的日期范围列出所有日期行.zip (16.68 KB, 下载次数: 13)



TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 10:15 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-16 10:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-16 16:39 , Processed in 0.038750 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表