Eu tenho uma máquina cuspindo arquivos de dados que eu quero analisar rapidamente. Existe uma coluna de dados (milhares de leituras). Esses valores são leituras de energia do laser. A máquina possui dois lasers e opera o primeiro com 10% de energia, cooldown, 25% de power, cooldown, 50%, cooldown, 75, cooldown, 100, long cooldown, repeat para laser two. Não há comprimento predefinido de cada medida ou tempo de resfriamento. Eu tenho trabalhado em uma macro que corta os pedaços de leituras utilizáveis (10%, 25%, etc.), mas eu estou tentando encontrar uma maneira de passar por esses pontos e calcular a média de cada conjunto para que eu saiba a média em cada valor para óptica 1 e óptica 2
Aqui está o que eu tenho até agora:
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
Neste momento, está fazendo o que eu quero, exceto que não reconhece as duas óticas separadas. como eu faria isso?