我的问题
我有一个具有以下模式的值列表(列表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)来实现这一目标,但是还无法进一步。任何帮助将不胜感激!
答案 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
但这仅取决于您显示的图案。具体来说,范围始终在()
中,并且两个范围之间用-