1

Итак, вот простой вопрос Excel, который оказался более сложным, чем ожидалось, поэтому я просто опубликую его здесь.

Я зарегистрировал некоторые данные, где вход A должен использоваться для сортировки, какие строки являются действительными. Есть +3000 строк, поэтому следующий рисунок - просто упрощение.

| 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 |   |

Мой вопрос заключается в том, как я могу скопировать все строки (или, точнее, их значения), которые удовлетворяют требованию, что A[i] >= 0 в другие ячейки (X, Y, Z и т.д.), Т.е. отфильтровать необработанные данные - без "FALSE". "или пустые клетки?

Примечание: данные были записаны в хронологическом порядке в соответствии с временем, поэтому просто сортировать их не просто.

1 ответ1

0

Этот код VBA должен работать:

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

Откройте VBA /Macros с помощью ALT+F11.

На левой стороне дважды щелкните по рабочему листу, с правой стороны вставьте код.

Установите переменные, в основном те, которые называются factor по вашему вкусу, и все.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .