Я беру данные измерений на машине (измерение мощности лазера). Он работает на 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

0