Excel - Encontre o valor máximo a cada 10 linhas e marque a linha

Questão

Preciso de ajuda para criar uma fórmula no Excel para identificar os valores mais altos e mais baixos a cada 10 linhas ENTÃO Identifique essas duas linhas colocando algum texto ou número em uma coluna em branco nas linhas com os valores mais alto e mais baixo. Por exemplo, quero retornar a palavra manter na Coluna A3 para SOMENTE o preço comercial Mais alto e Mais baixo para cada incisão de 10 linhas. Dessa forma, posso classificar os dados por Manter e excluir as outras 8 linhas de dados. Dessa forma, posso manter a maior parte da integridade dos meus dados e reduzir muito o tamanho do arquivo.

Estou usando o Excel 2007 e tenho 160.000 linhas de dados. O objetivo da fórmula é reduzir esses dados em 80%

A planilha abaixo dá um exemplo simples.

 Tempo de Negociação O preço C é uma coluna em branco para o lançamento da fórmula ___________A____________B_____________C Linha 1 19:30:25 121.81 Linha 2 19:30:26 121.80 Manter Linha 3 19:30:29 121.83 Linha 4 19:30:31 121.86 Manter Linha 5 19 : 39: 35 121.84 

Qualquer ajuda seria muito apreciada.

Solução

Existem 3 macros "test", "test1" e "undo". Test1 é incorporado em "teste", portanto, é suficiente se você executar apenas a macro "teste".

Todas as três macros devem estar no módulo. Macro "desfazer" desfaz os resultados macro.

Pegue um pequeno extrato de seus dados sobre 31 linhas e verifique a macro. Se os resultados estiverem ok, você pode usar as macros em seu arquivo original

MANTENHA O ARQUIVO ORIGINAL EM ALGUM LUGAR PARA QUE POSSA SER RECUPERADO.

Macro 1:

 Dim r Como Faixa, r1 Como Faixa, x Como Duplo, y Como Duplo Dim j Como Integer, k Como Integer Dim r2 Como Range, m Como Integer Sub teste () Planilhas ("sheet1"). Ativar Range ("c1") = "sinal" Set r2 = Range (Intervalo ("B1"), Intervalo ("B1"). End (xlDown)) j = 1 m = 1 Defina r = Células (j * m + 1, "B") MsgBox r.Address Set r1 = Faixa (r, r.Offset (9, 0)) MsgBox r1.Address Se r.Offset (9, 0) = "" Sair Do x = WorksheetFunction.Min (r1) y = WorksheetFunction .Max (r1) MsgBox x MsgBox yk = WorksheetFunction.Match (x, r2, 0) Células (k, "c") = "manter" k = WorksheetFunction.Match (y, r2, 0) Células (k, "c ") =" manter "m = m + 10 MsgBox m Loop teste1 End Sub 

Macro 2:

 Subteste1 () Planilhas ("planilha1"). Ativar Definido r = Intervalo (Intervalo ("A1"), Intervalo ("A1"). Fim (xlDown) .Offset (0, 3)) r.Fundo AutoFiltro: = 3, Criteria1: = "manter" r.Cells.SpecialCells (xlCellTypeVisible) .Copiar folhas de cálculo ("folha2"). Range ("A2") ActiveSheet.AutoFilterMode = False End Sub 

Macro 3:

 Sub undo () Worksheets ("sheet1"). Range ("c1"). Planilhas EntireColumn.Delete ("sheet2"). Cells.Clear End Sub 

Nota

Graças a venkat1926 por esta dica no fórum.

Artigo Anterior Próximo Artigo

Principais Dicas