我正在机器上进行数据测量(测量激光功率)它以10%的功率运行,然后是25%,50,75和100,两个单独的光学元件之间有冷却时间。每次跑步都不是恒定的长度,也不是冷却时间。所有数据都在一列中,数据范围非常一致。我试图在每个功率下获得每个光学元件的平均值。我把它们平均在一起,只需找到一种方法将数据基本上减少一半。 数据图
我在下面提供了我的代码:
Sub test()
Application.ScreenUpdating = False
Range("D4", Range("D4").End(xlDown)) = "=ABS(RC[-1])"
Range("e5", Range("e5").End(xlDown)) = "=R[1]C[-1]-RC[-1]"
Range("f5", Range("f5").End(xlDown)) = "=IF(AND(ABS(R[0]C[-1])<2,R[1]C[-2]>12),INDEX(RC[-2]:R[19996]C[-2],R4C4),"""")"
Range("G1") = WorksheetFunction.AverageIf(Range("f5", Range("f5").End(xlDown)), "<20")
Range("H1") = WorksheetFunction.AverageIfs(Range("f5", Range("f5").End(xlDown)), Range("f5", Range("f5").End(xlDown)), "<100", Range("f5", Range("f5").End(xlDown)), ">60")
Range("I1") = WorksheetFunction.AverageIfs(Range("f5", Range("f5").End(xlDown)), Range("f5", Range("f5").End(xlDown)), "<200", Range("f5", Range("f5").End(xlDown)), ">160")
Range("J1") = WorksheetFunction.AverageIfs(Range("f5", Range("f5").End(xlDown)), Range("f5", Range("f5").End(xlDown)), "<300", Range("f5", Range("f5").End(xlDown)), ">260")
Range("K1") = WorksheetFunction.AverageIfs(Range("f5", Range("f5").End(xlDown)), Range("f5", Range("f5").End(xlDown)), "<400", Range("f5", Range("f5").End(xlDown)), ">360")
Application.ScreenUpdating = True
End Sub
如果您知道在t = 6000之前的所有内容都是光学1并且t = 6000之后的所有内容都是光学2,那么只需添加一列并自己标记。然后,您可以参考宏中的新的optical_num列。
—
picobit
@picobit读数的长度和所有降温变化,所以我不能假设一个设定值。
—
Blake Irwin
跑步和降温的长度可能会有所不同,但在观察情节时它们非常明显。只需手动完成。这将花费你不到五分钟。
—
picobit