我有一个包含 3 组的表格(由 B 列中的值"1G、3G 或 5G"定义),如下所示。
对于值 1G 的每次(A 列),我需要测试值 3G 是否在 1G 的 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
我希望将结果写在每行包含所有数据的新工作表上。
我查看了这个网站和其他网站上的答案,但没有找到答案。谢谢你的帮助。
此宏将在 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
在第一行数据中输入此公式(我假设第 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
。公式周围应显示大括号。
现在向下拖动公式。任何评估为真实的内容都符合您的条件。它只搜索当前位置下方,因此最好对数据进行排序。
现在使用自动筛选器获取相关行。如果我理解正确,您可以在另一张纸上使用数据透视表,但我不知道这是如何完成的:)