2014-02-21 2 views
-1

У меня есть список пациентов с кодами для всех процедур, которые у них были, например: K567, H765, Y234. Я хотел бы искать все ячейки в столбце процедуры (J) для двух разных процедур вместе. Поэтому для примера выше, я хотел бы скопировать всю строку в другую таблицу, если она имела и K567, и H765. напримерПоиск более одного слова в одной ячейке

 
patient number- admission date- diagnosis- procedure code 

1-    1/1/14-   K47-  K567,H763,Y239,Y876 
2-    1/1/14-   K47-  K567,H769,Y233,Y874 
3-    1/1/14-   K47-  K567,H761,Y231,Y874 
4-    1/1/14-   K47-  K567,H765,Y239,Y876 
5-    1/1/14-   K47-  K567,H765,Y233,Y876

с моими критериями процедуры как Y874 и K567, в идеале, новый лист будет:

 
patient number- admission date- diagnosis- procedure code 

2-    1/1/14-   K47-  K567,H769,Y233,Y874 
3-    1/1/14-   K47-  K567,H761,Y231,Y874

У меня есть 4000 пациентов, чтобы пройти.

Усложняет дело, у меня есть диапазон кодов, поэтому вместо Y874 и K567, я действительно хочу Y871 или Y872 или Y873 или Y874 или Y875 или Y876 и K567.

Если это невозможно, любые изменения, облегчающие мою жизнь, будут высоко оценены!

+0

Проблема заключается не в количестве пациентов, а в количестве комбинаций для извлечения. Вы пробовали Фильтр, Текстовые фильтры, Содержит ..., содержит 'Y87' и содержит' K567' для выбора? – pnuts

ответ

0

Посмотрите на картинку, я сделал это на том же рабочем листе для ясности.

enter image description here

Процедура коды, чтобы искать в F1: F2

В G2 написать формулу массива (CTRL + SHIFT + Enter, чтобы ввести эту формулу):

=IFERROR(SMALL(IF(ISNUMBER(SEARCH($F$1;$D$2:$D$6))+ISNUMBER(SEARCH($F$2;$D$2:$D$6))>1;ROW($A$2:$A$6)-ROW($A$2)+1;"");ROWS($A$2:A2));"") 

Скопируйте эту формулу вниз пока вы не уверены, что он покроет максимально возможные матчи.

Теперь в H2 написать формулу:

=IF($G2="";"";INDEX(A$2:A$6;$G2)) 

Скопируйте формулу вправо до К2, а затем вниз по желанию (так же, как в первой формуле)

В зависимости от региональных настроек, которые вы, возможно, потребуется заменить разделитель полей ";" by ","

0

Функция, определяемая пользователем Vba с использованием регулярных выражений (Regex), позволит вам сделать это, просто установите для вашего шаблона регулярного выражения значение, соответствующее буквенному номеру-номеру. Тогда вы можете искать спички. Count> 1.

EDIT - тот, кто отказался от этого ответа - не могли бы вы объяснить, почему? Просто downvoting без объяснений ничего не помогает найти наилучшее решение проблемы.

Смежные вопросы