复制超出自动过滤范围的数据

时间:2017-08-24 09:16:46

标签: excel vba

我正在尝试创建一个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

0 个答案:

没有答案