我有一个包含3组的表(由B列中的值'1G,3G或5G'定义),如下所示。
对于值1G的每次(A列),我需要测试3G的10分钟内出现的值(如A列所示)。如果是这样,那么我需要测试一个值5G是否在20分钟内出现(价值1G的时间)。
因此读取时间'1G'然后读取时间'3G'并且如果=< 10分钟,然后读取时间'5G'=< 20分钟。
'Time' 'Group Name' 'Data'
----------
12:08 am 1G 747
12:45 am 1G 745
1:00 am 1G 746
12:36 am 3G 743
12:45 am 3G 747
1:03 am 3G 74
12:50 am 5G 75
1:00 am 5G 741
格式'时间':9/25/2012 8:37:00 pm
我希望将结果写在包含每行所有数据的新工作表上。
我在本网站和其他网站上查看了答案,但未找到答案。 谢谢你的帮助。
答案 0 :(得分:2)
此宏将在10分钟内提取所有拥有3G的1G线路,并在20分钟内提取5G线路。
Sub Macro2()
Dim lLastRow As Long, shtOrg As Worksheet, shtDest As Worksheet, rgLoop As Range
'turn off updates to speed up code execution
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Set shtOrg = ActiveSheet
Set shtDest = Sheets.Add
lLastRow = shtOrg.Cells(Rows.Count, 1).End(xlUp).Row
shtOrg.Range("D2:D" & lLastRow).FormulaR1C1 = _
"=IF(RC[-2]=""1G"",IF(COUNTIFS(C[-3],"">="" &RC[-3],C[-3],""<=""&RC[-3]+10/1440,C[-2],""3G"")*COUNTIFS(C[-3],"">="" &RC[-3],C[-3],""<=""&RC[-3]+20/1440,C[-2],""5G"")>0,TRUE,""""),"""")"
shtOrg.Range("E2:E" & lLastRow).FormulaR1C1 = _
"=N(IF(RC[-3]=""3G"",COUNTIFS(C[-1],TRUE,C[-4],""<=""&RC[-4],C[-4],"">=""&RC[-4]-10/1440),IF(RC[-3]=""5G"",COUNTIFS(C[-1],TRUE,C[-4],""<=""&RC[-4],C[-4],"">=""&RC[-4]-20/1440),"""")))>0"
shtOrg.Range("A1:E" & lLastRow).AutoFilter field:=4, Criteria1:="TRUE"
shtOrg.Range("A1:C" & lLastRow).SpecialCells(xlCellTypeVisible).Copy shtDest.Cells(1, 1)
shtOrg.Range("A1:E" & lLastRow).AutoFilter
shtOrg.Range("A1:E" & lLastRow).AutoFilter field:=5, Criteria1:="TRUE"
shtOrg.Range("A2:C" & lLastRow).SpecialCells(xlCellTypeVisible).Copy shtDest.Cells(Rows.Count, 1).End(xlUp).Offset(1)
shtOrg.Columns("D:E").ClearContents
shtOrg.Range("A1:E" & lLastRow).AutoFilter
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
答案 1 :(得分:0)
在第一行数据中输入此公式(我假设第2行):
=AND(B2="1G",SUM((B3:$B$8="3G")*(A3:$A$8<=A2+"00:10")*(A3:$A$8>=A2)),SUM((B3:$B$8="5G")*(A3:$A$8<=A2+"00:20")*(A3:$A$8>=A2)))
将公式中的$ B $ 8和$ A $ 8更改为最后一行数据。
输入公式后,按Enter
,而不是按Ctrl+Shift+Enter
。公式周围应该出现圆括号。
现在拖动公式。评估为真的任何东西都符合您的条件。它只在当前位置下方搜索,因此最好订购您的数据。
现在使用自动过滤器获取相关行。如果我理解正确,您可以在另一张纸上使用数据表,但我不知道如何完成:)