|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 chenyinsong8 于 2018-8-29 12:23 编辑
业务中有这样的表格,日期合并的表格,很难进行统计。
想通过VBA实现将合并日期拆分成单天:
伪程序如下:
1、原表格清除带"."或者带"空格"
2、循环1(不考虑班期将计划拆成每天):
for date=起始日期 to 结束日期,step=+1
复制出 航班号/航线/机型/
求日期的星期
并将标示变量=0
next
3、循环2(对于同一航班号 对于相同班期的修改标示变量)
for len(班期) to 1 ,step=-1
week=int(班期/ (10^len(班期)-1))
if week==weekday
标示变量=1
4、筛选出 标示变量 =1
复制到新表
- Sub shishi()
- '第一步:清空空格或者点
- Cells.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:= _
- xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
- Cells.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:= _
- xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
- Cells.Replace What:="-", Replacement:="-", LookAt:=xlPart, SearchOrder:= _
- xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
- '第二步:复制到新表当中,将计划拆成每天,并找到星期在班期中的位置
- Dim R, T As Long
- Dim i, j As Integer
- R = Sheet1.Range("a1048576").End(xlDown).Row
- For i = 2 To R
- T = Sheet1.Range("b" & i) - Sheet1.Range("a" & i) + 2
- For j = 2 To T
- Sheets(Sheets.Count).Range("a" & j) = Sheet1.Range("b" & i)
- Sheet1.Range("c" & i).Resize(1, 3).Copy Sheets(Sheets.Count).Range("c" & j)
- Sheets(Sheets.Count).Range("b" & j).Value = Weekday(Sheets(Sheets.Count).Range("a" & j), 2)
- Sheets(Sheets.Count).Range("f" & j).Value = InStr(Sheet1.Range("c" & i), Sheets(Sheets.Count).Range("b" & j))
- Next
- Next
-
- End Sub
复制代码
尝试写了代码,但是无法执行出结果,恳请大家帮帮忙
|
|