Excel表格罗列出指定范围的日期
1、打开Excel表格,按下【Alt+F11】组合键调出VBE编辑器。
2、点击【插入】、【模块】。
3、在模块代码框里边输入以下VBA程序代码。
Sub Enumerate_Date()
Dim str1, str2, str3, str4, i1, i2, i3, i4, i5
On Error Resume Next '忽略运行过程中可能出现的错误
Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义Sheet1工作表
For i1 = 2 To 1000 '从第2行到1000行
Set ce = mysheet1.Cells(i1, 1) '定义第一列变量单元格
If mysheet1.Cells(i1, 1) <> "" Then '如果单元格不是空白,则
i2 = InStr(1, ce, "-") '查找“-”所在的位置
If i2 <> 0 Then '如果存在“-”,则
str1 = Left(ce, i2 - 1) '截取第一个日期
str2 = Right(ce, Len(ce) - i2) '截取第二个日期
i3 = CDate(Replace(str1, ".", "/")) '把“.”替换成“/”并转换成日期
i4 = CDate(Replace(str2, ".", "/"))
str4 = ""
For i5 = i3 To i4 '对每个日期按顺序执行
str3 = Application.WorksheetFunction.Text(i5, "yyyymmdd") '转换成需要的格式
If str4 = "" Then
str4 = Chr(39) & str3 '字符串拼接( '+str3 )
Else
str4 = str4 & "," & str3 '字符拼接
End If
Next
mysheet1.Cells(i1, 2) = str4 '拼接的字符串写入同一行的单元格
End If
End If
Next
End Sub
4、检查无误后,在VBE编辑器的功能区里边点击“运行”图标运行程序。
5、回到Sheet1工作表界面,将会看到已经罗列出指定范围日期。
1、VBA程序思路解读:
1、单元格里面的日期范围不被计算机直接认可,需要通过截取函数(Left、Right)把它们截取出来。
2、要截取前后的日期,需要判断出截取到什么位置,即获取标识符“-”所在的位置,之后就好判断了。
3、VBA里面的日期间隔只认可斜杠“/”,不认可点号“.”,所以需要把点号“.”替换成斜杠“/”,再换成可计算的日期。
4、将转换后的日期通过for循环逐一执行,转换成所需的格式,再把它们按顺序拼接在一起,写入B列对应的单元格。
5、在写入的B列单元格里边的左上角加入个英文的单引号,主要是把单元格转换成文本格式,以免写入的拼接字符被当做数值计算。