我正在尝试创建一个excel文档,该文档从另一个软件中获取粘贴的数据,并根据所述数据生成报告。
数据格式为
ID, YYYY, MM, DD, HH, MM, SS, Day
数据成对出现。所以一个有效的条目是:
1 2017 8 24 09 44 52 4
1 2017 8 24 10 50 00 4
然后,用户可以访问完整的原始数据转储,或者可以创建报告。
如果用户想要创建报告:用户从组合框中选择一个日期,并从选项按钮中选择是否需要所有数据:BEFORE,所有数据AFTER或所选日期的所有数据。
以下是BEFORE SELECTED DATE的过滤器代码示例。 这将根据需要过滤我的数据,并将过滤后的数据复制到报告模式中。
If OptionButton1 = True Then 'Before Selected Date
With Worksheets("PasteData")
.Range("A1:H1").AutoFilter Field:=4, Criteria1:="<=" & ComboBox1.Value
.Range("A1:H1").AutoFilter Field:=3, Criteria1:="<=" & Mid(ComboBox2.Value, 1, 2)
.Range("A1:H1").AutoFilter Field:=2, Criteria1:="=" & ComboBox3.Value
.Range("A2:H" & LastRow).Copy Destination:=Sheets("Report").Range("A6")
End With
End If
我遇到的麻烦是,有时数据可能会超过两天,即
ID| YYYY | MM | DD | HH | MM | SS | Day
--|------|----|----|----|----|----|----
1 | 2017 | 08 | 24 | 23 | 30 | 00 | 01
1 | 2017 | 08 | 25 | 02 | 00 | 00 | 02
现在,如果我要按天过滤,并在8月24日之前选择所有数据,那么我将丢失该对中的其他条目。
Obvioulsy我需要检查日期是否会延迟到另一天
我认为我需要的是:
If Entry1ID1 = Entry1ID2 __ ' Entry ID's Match
AND Entry1Day1 <> Entry1Day2 'Entry days are different Then
copy selection + 1
编辑:我想如果我在复制数据之前选择,我可以写一个FOR循环,循环遍历范围内的每个选择。即:
for each selection in range
if selection - 1 ID = selectionID then
selection -1 . select
Else
selection + 1 . select
Next