Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2058|回复: 3

[已解决]请问如何用vba按以下规则填写年份和月份

[复制链接]
发表于 2013-9-20 19:13 | 显示全部楼层 |阅读模式
请问如何用vba按以下规则填写年份和月份,谢谢!

4位数字分别代表“年年月月”,1206即代表12年,06即代表6月,以下的要求就是自动填充从12年6月到13年8月

起始期间 1206
结束期间 1308

最后填充的结果是
1206
1207
1208
1209
1210
1211
1212
1301
1302
1303
1304
1305
1306
1307
1308
最佳答案
2013-9-20 20:19
  1. Sub myfill()
  2.     Dim dStart As Date, dEnd As Date
  3.     Dim strTemp As String
  4.     Dim arr(1 To 1000, 1 To 1), i As Integer

  5.     strTemp = Range("b2").Value
  6.     dStart = CDate(Format(strTemp & "01", "1900/00/00"))
  7.     strTemp = Range("b3").Value
  8.     dEnd = CDate(Format(strTemp & "01", "1900/00/00"))
  9.     Do While dStart <= dEnd
  10.         i = i + 1
  11.         arr(i, 1) = Format(dStart, "yymm")
  12.         dStart = DateAdd("m", 1, dStart)
  13.     Loop
  14.     If i Then
  15.         Range("b6").Resize(i).Value = arr
  16.         MsgBox "填充完成"
  17.     Else
  18.         MsgBox "日期无效"
  19.     End If
  20. End Sub
复制代码

按要求填充期间.zip

7.06 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-9-20 20:15 | 显示全部楼层
  1. Sub 按钮1_Click()
  2.     Dim i As Integer
  3.     Dim Mmin As Integer, Mmax As Integer
  4.     Dim re
  5.     Mmin = Range("B2")
  6.     Mmax = Range("B3")
  7.     temp = Mmin - 1
  8.     ReDim re(1 To 1)
  9.     Do Until Mmax - temp <= 0
  10.        i = i + 1
  11.        ReDim Preserve re(1 To i)
  12.        temp = temp + 1
  13.        If (temp Mod 100) Mod 12 = 1 Then
  14.             temp = temp + 100 - 12
  15.         End If
  16.         re(i) = temp & ""
  17.     Loop
  18.     [a6].Resize(UBound(re), 1) = Application.WorksheetFunction.Transpose(re)
  19. End Sub
复制代码

按要求填充期间.rar

13.58 KB, 下载次数: 5

回复

使用道具 举报

发表于 2013-9-20 20:19 | 显示全部楼层    本楼为最佳答案   
  1. Sub myfill()
  2.     Dim dStart As Date, dEnd As Date
  3.     Dim strTemp As String
  4.     Dim arr(1 To 1000, 1 To 1), i As Integer

  5.     strTemp = Range("b2").Value
  6.     dStart = CDate(Format(strTemp & "01", "1900/00/00"))
  7.     strTemp = Range("b3").Value
  8.     dEnd = CDate(Format(strTemp & "01", "1900/00/00"))
  9.     Do While dStart <= dEnd
  10.         i = i + 1
  11.         arr(i, 1) = Format(dStart, "yymm")
  12.         dStart = DateAdd("m", 1, dStart)
  13.     Loop
  14.     If i Then
  15.         Range("b6").Resize(i).Value = arr
  16.         MsgBox "填充完成"
  17.     Else
  18.         MsgBox "日期无效"
  19.     End If
  20. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-9-21 23:55 | 显示全部楼层
谢谢大家~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 11:49 , Processed in 0.296788 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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