Filtragem lógica de dados no Excel entre duas colunas

1

Então aqui está uma simples pergunta do Excel que acabou se tornando mais complicada do que o esperado, então vou postar aqui.

Eu registrei alguns dados onde a entrada A deve ser usada para classificar quais linhas são válidas. Existem +3000 linhas, portanto, a figura a seguir é apenas uma simplificação.

| A | B | C | X |
-----------------
| 0 | 2 | 1 |   |
| 0 | 4 | 2 |   |
| 2 | 1 | 7 |   |
| 4 | 9 | 1 |   |
| 3 | 7 | 4 |   |
| 0 | 8 | 2 |   |
| 0 | 7 | 7 |   |

Minha pergunta é como eu posso copiar todas as linhas (ou mais precisas, seus valores) que atendem a demanda que A[i] >= 0 para outras células (X, Y, Z etc.) ou seja, filtrar os dados brutos sem "FALSE" ou células em branco?

Nota: os dados foram registrados cronologicamente de acordo com o tempo, por isso não é simples ordená-los.

    
por svea 18.04.2016 / 14:49

1 resposta

0

Este código VBA deve funcionar:

Public Sub custom_filtering()
    Dim wks As Worksheet
    Set wks = ActiveSheet
    firstcolumn = 1 'The first column of the original data. A=1, B=2, C=3, etc.
    totalcolumns = 2 'The total of columns to be copied
    factor = 1 'The factor to consider a range to be copied
    destrow = 1 ' The row where the copied data starts
    destcolumn = 5 'The column where the copied data starts
    totalrows = wks.Cells(Rows.Count, firstcolumn).End(xlUp).Row
    For i = 1 To totalrows
        thecell = wks.Cells(i, firstcolumn)
        If thecell < factor Then
            Range(Cells(i, firstcolumn), Cells(i, totalcolumns)).Copy Destination:=Range(Cells(destrow, destcolumn), Cells(destrow, destcolumn + totalcolumns))
            destrow = destrow + 1
        End If
    Next i
End Sub

Abra o VBA / Macros com ALT + F11 .

No lado esquerdo, clique duas vezes em A planilha, no lado direito, cole o código.

Defina as variáveis, principalmente a que chamamos factor ao seu gosto e isso é tudo.

    
por 18.04.2016 / 15:57