Автоматическая сортировка / анализ данных в Excel - PullRequest
1 голос
/ 19 мая 2010

У меня есть данные в виде четырех столбцов. Первые три столбца представляют время, значение1, значение 2. Четвертый столбец является двоичным, все 0 или 1. Есть ли способ сказать Excel, чтобы удалить время, значение 1 и значение 2, когда соответствующее двоичное значение в четвертом столбце 0? Я знаю, что это намного проще в C ++ или Matlab, но по независящим от меня причинам я должен сделать это в Excel.

Ответы [ 6 ]

2 голосов
/ 20 мая 2010

Мой Visual Basic немного заржавел, но этот макрос сделает это. Просто запустите редактор VBA (Shift + F11), вставьте новый модуль (если его нет) и добавьте следующий код. Затем убедитесь, что таблица, которую вы хотите очистить, находится на активном листе, перейдите куда-нибудь внутрь кода и нажмите кнопку запуска (F5) в редакторе VBA. Тогда все строки с 0 в столбце D должны исчезнуть.

Sub clean()
    Dim i As Integer
    i = 1
    While Range("D" & i).Value <> ""
        If Range("D" & i).Value = "0" Then
            Rows(i).Delete Shift:=xlUp
        Else
            i = i + 1
        End If
    Wend
End Sub
1 голос
/ 20 мая 2010

Вручную или с помощью vba, самый быстрый путь - сортировка по кол.4, найти 1-й ноль и удалить все ниже.
Что-то вроде:

    Sub test()
        Dim c As Range
        Range("a1").CurrentRegion.Sort key1:=Cells(1, 4), XlSortOrder:=xlDescending
        Set c = Range("4:4").Find("0")
        Range(c.Row & ":65000").Delete    'or .Clear
    End Sub
1 голос
/ 19 мая 2010

хорошо, вы можете сделать это, чтобы оно отображалось пустым, а затем манипулировать новыми данными:

        A                      B                 C                  D
=if(D1=0,"",time1)  =if(D1=0,"",value1)   =if(D1=0,"",value2)       0
0 голосов
/ 19 мая 2010

Для этого нужно использовать макросы, формулы не могут удалять столбцы.

Я ненавижу писать макросы Excel, но псевдокод выглядит примерно так:

declare row_marker = 1
while (Workbook.Cells(1, row_marker) contains data)
 if (Workbook.cells(1, rowmarker).OffsetRight(3).Value == 0)
   remove_row(workbook.rows(row_marker)
 else
   row_marker++;

То, что это говорит, это начало в строке 1, если эта строка имеет 0 в двоичном столбце, удалите его, если нет, перейдите к следующей строке. Примечание: мы не переходим к следующей строке, если мы удаляем строку, потому что строка перемещается вверх вместе с нами, поскольку мы не ссылаемся на строку, а на смещение в книге.

0 голосов
/ 19 мая 2010

В качестве другой альтернативы вы можете поместить пятый столбец как 1,2,3,4 и т. Д., А затем отсортировать по столбцу D (двоичный), а затем по столбцу E (порядковый номер)

0 голосов
/ 19 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...