如果数字在范围内,则Excel返回true

时间:2019-01-02 17:11:45

标签: excel search vlookup

我的问题

我有一个具有以下模式的值列表(列表1)...

1234-COD-125

我还有另一个列表(列表2),遵循该模式...

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

如果列表1中的值在范围内,我需要搜索列表2并返回True。例如。

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)是供应商ID和代码。最后一部分(125是订单ID。不同的供应商可以具有相同的订单ID,因此我的查询需要考虑该供应商。

我到目前为止所做的事情

我写了一系列提取字符串部分的公式。例如,对于

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

我已经在单个单元格中提取了以下内容

100

150

COD

1234-COD-100

1234-COD-150

我知道我可以创建一个序列来手动填充范围内的每个订单ID,然后执行查找,但是清单2中有数百个值,因此这不是一个选择。

另一种选择是获取列表2(12345(1234-COD-100 - 1234-COD-150)中的值,并检查是否在列表1中找到了100-150范围内的每个数字。

我希望能够使用公式(甚至VBA)来实现这一目标,但是还无法进一步。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

解析文本总是有问题的。以下内容将返回您想要的内容:

=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

但这仅取决于您显示的图案。具体来说,范围始终在()中,并且两个范围之间用-

隔开