Excel возвращает true, если число находится в пределах диапазона - PullRequest
0 голосов
/ 02 января 2019

Моя проблема

У меня есть список значений (Список 1), которые имеют следующий шаблон ...

1234-COD-125

У меня есть другой список (Список 2), который следует шаблону ...

12345(1234-COD-100 - 1234-COD-150)

Мне нужно выполнить поиск в Списке 2 и вернуть True, если значение в Списке 1 находится в пределах диапазона. Так например ..

List 1         Result       List 2
1234-COD-125    TRUE        12345(1234-COD-100 - 1234-COD-150)
1234-COD-126    TRUE        12345(4567-BAH-100 - 4567-BAH-150)
1234-COD-155    FALSE
4567-BAH-125    TRUE        
4567-BAH-126    TRUE
4567-BAH-155    FALSE 

Фон

Первая часть (1234-COD) - это идентификатор поставщика и код. Последняя часть (125) - это идентификатор заказа. Разные поставщики могут иметь один и тот же идентификатор заказа, поэтому мой поиск должен учитывать поставщика.

Что я сделал до сих пор

Я написал ряд формул, которые извлекают части строки. Например, для

12345(1234-COD-100 - 1234-COD-150)

Я извлек следующее в отдельных клетках

100

150

COD

1234-COD-100

1234-COD-150

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

Другой вариант - взять значение в Списке 2 (12345(1234-COD-100 - 1234-COD-150) и проверить, находится ли каждое число в диапазоне 100-150 в Списке 1.

Я хотел бы иметь возможность использовать формулу (или даже VBA) для достижения этой цели, но не смог продвинуться дальше. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 02 января 2019

Разбор текста всегда проблематичен.Следующее вернет то, что вы хотите:

=SUMPRODUCT((A2>=TRIM(LEFT(MID($C$2:$C$3,FIND("(",$C$2:$C$3)+1,LEN($C$2:$C$3)),FIND(" - ",MID($C$2:$C$3,FIND("(",$C$2:$C$3)+1,LEN($C$2:$C$3)))-1)))*(A2<=SUBSTITUTE(TRIM(MID($C$2:$C$3,FIND(" - ",$C$2:$C$3)+3,LEN($C$2:$C$3))),")","")))>0

enter image description here

Но это зависит исключительно от шаблона, который вы показываете.В частности, что диапазон всегда находится в (), а два диапазона разделены -

...