Формула Excel для извлечения определенных строк - PullRequest
0 голосов
/ 18 марта 2011

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

Например, пусть говорит, что у меня есть следующий набор данных (два столбца):

+--------------+------------------+ 
| Nylon        |  Nylon wire      | 
| Cable        |  5mm metal cable | 
| Epoxy        |  some comment    | 
| Polyester    |  some comment    | 
+--------------+------------------+

Я хочу найти строки, которые не содержат ключевые слова Nylon и Epoxy (и другие ключевые слова в этом отношении), и поместить эти строки в другое место (например, лист).

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 18 марта 2011
Sub a()
  With Worksheets(1)
    j = 1
    For i = 1 To .UsedRange.Rows.Count
      If .Rows(i).Find(what:="Nylon") Is Nothing And .Rows(i).Find(what:="Epoxy") Is Nothing Then
        .Rows(i).Copy Destination:=Worksheets(2).Rows(j)
        j = j + 1
      End If
    Next i
  End With
End Sub
0 голосов
/ 18 марта 2011

Я покажу, как вы можете проверить, находится ли одна строка в некоторых других столбцах, возвращая логическое значение. Затем вам нужно решить, как обращаться с положительными случаями. Я полагаю, вы будете использовать VLOOKUP или что-то вроде этого.

Пожалуйста, замените; от ,. Я не использую английские региональные настройки банкомата.

Вы можете комбинировать функции НАЙТИ и ISERROR, чтобы найти свой результат. ISERROR возвращает логическое значение, и вы можете комбинировать несколько проверок столбцов столько, сколько хотите.

Пример:

Допустим, у вас есть тестовые ключевые слова в ячейках C1 и D1, а указанный выше диапазон начинается с A2.

Теперь мы можем добавить в C2 тест, чтобы проверить, существует ли строка Nylon в A2, то есть = ISERROR(FIND(C1;$A$2)). Нам также нужно проверить, существует ли строка Nylon в B2, тогда мы добавим второе условие: AND(ISERROR(FIND(C1;$A$2));ISERROR(FIND(C1;$B$2)))

Поскольку мы проверяем, вернула ли функция FIND ошибку или нет, это означает, что наша функция вернет false, когда строка будет найдена. Чтобы было проще понять, я считаю, что лучше добавить условие NOT в нашу формулу, тогда, если строка в C1 появляется в A2 или B2, наша функция вернет TRUE:

=NOT(AND(ISERROR(FIND(C1;$A$2));ISERROR(FIND(C1;$B$2))))

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

Вот структура результата:

                                            Nylon       Epoxy
 Nylon          |     Nylon wire        |   TRUE    |   FALSE
 Cable          |     5mm metal cable   |   FALSE   |   FALSE
 Epoxy          |     some comment      |   FALSE   |   TRUE
 Polyester      |     some comment      |   FALSE   |   FALSE
0 голосов
/ 18 марта 2011
  A                   | B                  | C
  --------------------  ------------------- --------     
1 Search Term ->      |  nylon           | 
2 Name                |  Description       | Found
3 Nylon               |  Nylon Wire        | TRUE
4 Cable               |  5 mm metal cable  | FALSE
5 Exoxy               |  some comment      | FALSE
6 Polyester           |  some comment      | FALSE

В приведенном выше примере я бы создал автофильтр на A2: C6, в котором первая строка была моим заголовком.В каждой ячейке в C3: C6 у меня была бы формула, похожая на (это от C3):

=OR(NOT(ISERROR(SEARCH($B$1,A3))),NOT(ISERROR(SEARCH($B$1,B3))))

Теперь вы можете использовать инструменты автофильтра для фильтрации тех, где найдено значение true.

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