如果在某个日期之间涉及一个多月,则生成“重复”行

时间:2019-01-04 14:49:42

标签: excel vba excel-vba excel-formula

我被要求“自动化”一些与医疗执照有关的excel任务,我现在主要需要的是确定执照是否长于一个月,如果这样,除了需要的日期外,复制整个行数据以便在“下个月”进行修改,并生成包含年份和月份的期间ID(例如,2018年1月开始的许可的201801)。

我首先要做的是检查并显示许可证是否长于x周期(是否有一个循环计算天数并确定它是否与该单元格上方的月份匹配),所以如果一个许可证在1月开始并在2月结束,会显示如下:

period id   member  start date  end date    jan feb
201801  john doe    09/01/2018  07/02/2018  23  7

=SUMAPRODUCTO(--(TEXTO(FILA(INDIRECTO($J9 & ":" & SI($K9="";HOY();$K9)));"MMM")=N$8))

上表的问题在于文件变得与公式变得笨拙,所以我现在暂时只考虑行重复:

period id   member  start date  end date    
201801  john doe    09/01/2018  31/01/2018      
201802  john doe    01/02/2018  07/02/2018  

问题是我不知道如何比较月份并按照自己的方式打印它们。

Sub CopyData()
Set hojatst = Sheets(Hoja5)
Dim d
Dim j
d = 1
j = 8
Do Until IsEmpty(hojatst.Range("D" & j))
    If hojatst.Range("D" & j) < hojatst.Range("E" & j) Then
    d = d + 1

    End If
    j = j + 1
End Sub

1 个答案:

答案 0 :(得分:0)

这是您将需要编写的代码的“草图”。 Stackoverflow不是代码请求服务,因此您需要尽力自己编写它。社区很乐意帮助您在学习过程中进行故障排除,但是您应该经常使用Google。我写出草图以帮助您入门,因为我记得学习编码的基础是多么困难。随时提出澄清的问题。

首先,我无法使Excel识别DD / MM / YYYY格式。可能是因为我的是美国副本,而不是这里的标准时间格式。由于您列出的公式,您似乎使用的是其他版本的Excel。但是,请确保在执行过程中再次检查代码是否正确读取DD / MM / YYYY格式。

创建一个变量cl,它是当前行。创建md,这是月份差。

如果Month (Start Date)小于Month(End Date),然后md = Difference of Months,则在当前行下方插入那么多行。 Range("E" & cl+md).Value = Range("E" & cl),它将您的结束日期粘贴到最后一个广告位。

然后为cl < cl+md填充句点,如果最后一个数字不是4,则在值上加上+1,如果不是,则添加+97。

然后用Start of MonthEnd of Month日期填写空白单元格。

最后设置cl = cl + md + 1loop进入下一个“原始”行。