У меня есть машина, которая выплевывает файлы данных, которые я хочу быстро проанализировать. Существует один столбец данных (тысячи чтений). Эти значения являются показаниями мощности лазера. Машина имеет два лазера и запускает первый на 10% мощности, время перезарядки, 25% мощности, время перезарядки, 50%, время перезарядки, 75, время перезарядки, 100, длительное время перезарядки, повторите для лазера два. Нет предопределенной продолжительности каждого измерения или времени перезарядки. Я работал над макросом, который обрезает фрагменты полезных показаний (10%, 25% и т.д.), Но я пытаюсь найти способ пройти через эти точки и усреднить каждый набор, чтобы я знал среднее значение для каждого значение для оптики 1 и оптики 2

Вот что у меня так далеко:

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

Прямо сейчас он делает то, что я хочу, за исключением того, что он не распознает две разные оптики. как бы я это сделал?

график данных

0