我被要求“自动化”一些与医疗执照有关的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
答案 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 Month
和End of Month
日期填写空白单元格。
最后设置cl = cl + md + 1
和loop
进入下一个“原始”行。