agrupa os valores no conjunto de 5 e retorna o primeiro valor de cada grupo

1

Eu tenho uma longa lista de valores de um estoque em formato de minuto. A coluna C mostra os valores abertos (por minuto) e a coluna F mostra os valores próximos correspondentes

Agora quero converter esses dados em um formato de 5 min a partir de 1 minuto. essa média para a coluna CI deseja que o primeiro valor seja deslocado para um grupo de 5 (ie c1 de C1: C5, então c6 de C6: C10, então C11 de C11: C15) e na coluna FI deseja o último valor do grupo . veja abaixo o destaque eu preciso

(isto é, F5 de F1: F5, depois F10 de F6: F10 e depois F15 de F11: F15).

Eu não sei como usar OFFSET / INDEX / MATCH em combinação para alcançar esses resultados. mais tarde eu também gostaria de converter isso para 10 min / 30min / 60min formato

    
por CDG 07.10.2014 / 09:16

3 respostas

1

Obrigado a todos por sua ajuda. Eu estava procurando por uma solução simples e, felizmente, a combinação de INDEX e OFFSET ajuda a resolver isso. Eu usei a seguinte fórmula:

= ÍNDICE (DESVIO (A $ 1, (LINHA (A1) -1) * 2,0,2), 2,0)

na fórmula acima ajudou a converter a lista em grupo de 2 (ou qualquer outro grupo baseado no requisito e, portanto, 2 pode ser alterado para 5, 10 etc.) e o Index ajudou a localizar o último valor do grupo. funcionou muito bem para mim.

Obrigado novamente

    
por 13.10.2014 / 10:18
0

Eu vejo você marcando a função worksheet, então tente o código vba abaixo.

Você pode alterar as variáveis ipWorksheet e opWorksheet para planilhas em seu excel. Além disso, se você quiser mudar rowOn para outro número, dependendo de onde você deseja começar a obter seus dados de

Sub Extract_Nth_rows()
'
' Extract_Nth_rows
'

    Dim rowOn, rowTotal, rowJump As Integer
    Dim ipWorksheet, opWorksheet As String

    ipWorksheet = "Sheet1"                              ' CHANGE THIS to the name of your Data sheet
    opWorksheet = "Sheet2"                              ' CHANGE THIS to the name of the sheet to put the data

    rowOn = 1                                           ' This will start on Row 1 of Sheet1
    rowTotal = Sheets(ipWorksheet).UsedRange.Rows.Count ' Count number of Rows


    Sheets(opWorksheet).Cells.Clear                     ' Clear all rows

    While rowOn < rowTotal
        Sheets(ipWorksheet).Select
        Rows(rowOn * 5 & ":" & rowOn * 5).Select
        Selection.Copy
        Sheets(opWorksheet).Select
        Range("A" & rowOn).Select
        ActiveSheet.Paste
        rowOn = rowOn + 1
    Wend
End Sub
    
por 07.10.2014 / 17:25
0

Eu usaria o suplemento de consulta de energia para isso. Ele possui comandos Index e Group que devem atingir o que você deseja.

Eu criei uma solução semelhante à que você pode visualizar ou fazer download - é a seguinte: "Demonstração do Power Query - Desproteger pares de linhas em duas colunas. xlsx" no meu One Drive:

link

Primeiro, adiciono uma coluna Index (número de linha sequencial) e, em seguida, aplico uma função Number.Mod para agrupar cada 2 linhas. Para você, basta mudar isso para 5 linhas.

link

Você pode, alternativamente, querer agrupar pelos valores de tempo (em vez de assumir que sempre haverá 5 linhas) - Power Query tem funções para ajudar, por exemplo, Time.Minute

link

Depois de calcular seu valor de agrupamento como uma nova coluna, use-o com o comando Grupo para resumir seus dados:

link

    
por 08.10.2014 / 04:52