Страницы: 1
RSS
Найти все вхождения слова из столбца 2 в столбце 1, и все значения выдернуть
 
Всем привет.
Нужно взять слово из столбца B и проверить на наличие его в словах из столбца A(где оно может быть внутри какого-то слова, либо отдельно) и если вхождение найдено, то "выдернуть как-то это слово"

Например проверяем слово из столбца B: пат
В первом столбце есть слова:
пат 123
11пат
лопата


Вот эти 3 слова нужно "выдернуть", если слова пат больше нет в 1м столбце, начинаем проверять 2е слово из столбца B в диапазоне значений столбца А

К теме прикрепил файл-пример
Пробовал и так и эдак - не получается
Изменено: Limyh - 01.04.2015 22:33:50
 
вообще-то слово agness ни разу не встречается в столбце а..
Живи и дай жить..
 
Ага, спасибо. перезалил пример
Моя ошибка.. в столбце A вместо agnes должно быть agness

Что-то в интернете смотрю.. гуглю... сам пробую. не получается.. похоже так нельзя сделать
Изменено: Limyh - 01.04.2015 09:27:09
 
Похоже, что это та задача, с которой Эксель всеми своими инструментами не сможет справиться :((
 
макросом это решается:
загоняете первый и второй столбец в массив
идете циклом по первому столбцу(массива)
на каждом шаге раскладываете значение элемента массива на слова с помощью функции split
проверяете содержится ли в каждом из слов значение из второго столбца
если содержится то добавляете это слово в результирующий массив( каждый раз наращивая его с помощью redim preserve)

потом выводите результат на лист


как-то так..
Живи и дай жить..
 
Цитата
Слэн написал: макросом это решается
Стесняюсь сказать. Макросом не пользовался.
Сделать подобное сейчас не смогу к сожалению.
Функцией ВПР так же ничего толком не получается
 
Limyh, смотрим с доп столбцом
пс только вы выражайтесь попонятней если что не так, а ни как в прошлой теме "так да не так"  
Лень двигатель прогресса, доказано!!!
 
не, формулами, конечно, извратиться можно, наверное, но я б не стал..
а нужно именно так как вы в примере указали? или порядок в столбце результата не важен? лишь бы были все включения..
Живи и дай жить..
 
Аа.. т.е. вы сначала сделали следующее:
1) проверили значение из столбца B в диапазоне значений столбца A. И если есть такое значение, то возле значения столбца A - поставили порядковый номер значения в столбце B. Получился отдельный столбец
2) А потом просто по формуле заполнили по порядку. Все значения, у которых в соседнем столбце идёт значение "1", и т.д.

Еще такой вопрос: а как можно эти значения после всего удалить?? Т.е. после подставления в итоговую таблицу (столбец F).
Ну или поставить слово какое-то, чтобы потом по фильтру удалить.
Мне просто нужно, чтобы все ячейки в столбце A, в которых будут найдены какие- либо значения из столбца B -УДАЛИЛИСЬ. Ну или может подставить слово такое редкое, чтобы после всего можно было по поиску этого слова найти все такие ячейки и разом удалить.
 
Чтоб не "редимпресервить" - можно собирать коллекцию без ключей (или с ключами, смотря что нужно), будет быстрее.
Потом в цикле перегрузить в массив, его на лист.
 
Либо после того, как будет заполнен столбец F (из файл-примера, который прислал Сергей), можно будет сравнить значения из столбца F в столбце A и также в соседнем столбце поставить цифру или символ какой-то.. а потом по фильтру этого столбца - удалить
 
Limyh, вот вы тему замутили вам надо удалить все ячейки в столбце A, в которых будут найдены какие- либо значения из столбца B или можно строки, если строки то формулой проходимся в соседнем столбце с А проставляется признак например 1 для всех найденых, фильтруем по 1 удаляем и все  
Лень двигатель прогресса, доказано!!!
 
Цитата
Сергей написал:  Limyh  , смотрим с доп столбцом
а если строк будет тысяч 10 ?  :)

может заменить и {1;2;3;4;5;6;7} на СТРОКА($D$1:$D$7)  ?
Живи и дай жить..
 
вот именно.. строк то в первом столбце почти 15 тыщ
 
Блин-блинский.

Прикрепляю к сообщению пост от Сергея

Во второй вкладке "Мои попытки" уже вставил все значения мои (вернее не все, а все, что уместилось в 100 кб файле эксель (больше 100 нельзя).

Столбец A - это часть значений (всего их больше 17 тысяц). В столбце D - все.

Формулу подставляю и так и эдак.. выдает почему-то 1 и все

Уже и воспользовался советом Слэн: может заменить и {1;2;3;4;5;6;7} на СТРОКА($D$1:$D$7) ?

Все равно не хочет :((

Блин-блинский. Да сколько за Вами можно пустые строки убирать?! [МОДЕРАТОР]
 
=ИНДЕКС({1;2;3;4;5;6;7};МАКС(ЕЧИСЛО(ПОИСК($D$1:$D$7;A1))*СТРОКА($D$1:$D$7)))

Получается:  {1;2;3;4;5;6;7} - это 7 значений из столбца B
И функция =ИНДЕКС выдает одно из 7 значений (1-2-3-4-5-6-7), которые подходят под значение функции МАКС.

ПОИСК($D$1:$D$7;A1))*СТРОКА($D$1:$D$7))) - вот эту строку не понял. Т.к. значений в столбце B у меня больше чем 7, я меняю второе значение $D$7 (7 на нужную цифру-количество строк-значений)
И так и эдак пробую  - не получается почему-то.
Похоже Эксель не признает меня за своего((
Изменено: Limyh - 01.04.2015 22:36:50
 
во-первых - это формула массива - вы это учитываете?
во-вторых надо менять диапазон и во второй формуле, где результат
Живи и дай жить..
 
Т.е. менять нужно в двух формулах сразу диапазоны??
2я формула разве зависит как-то от первой?

Блин, в самом деле не получается сделать с большим объемом
Изменено: Limyh - 01.04.2015 22:36:21
 
война войной а обед по расписанию 0 это значит значение не найдено
Лень двигатель прогресса, доказано!!!
 
вот в одной из тем The_Prist делал макрос назначения категорий, присобачил его в ваш файл, серым выделил строки которые по формуле не содержали искомых значений, тыкаете в кнопку смотрите результат потом по фильтру отбираете "удалить строку" и уничтожаете их
Лень двигатель прогресса, доказано!!!
 
Спасибо
получилось через этот файл сделать :1 Апр 2015 12:07:24

Сколько часов убито
 
Limyh, перестаньте писать через строку.
Исправил, в сообщении №15 оставил.
Страницы: 1
Наверх