[英]Excel: Partial matching Range 1 against each cell string individually in Range 2, then returning value in column
如果你能帮助我,我爱你。
假设我有一堆 URL:
| Range 1 |
|------------------------|
| www.orange.com |
| www.orange.example.com |
| www.example.red.com |
| www.example.com/blue |
我也有一张这样的表:
| Range 2 | Range 3 |
|---------|---------|
| orange | 1 |
| red | 2 |
| blue | 3 |
| green | 4 |
| pink | 5 |
我如何编写一个公式来下拉 URL 列表,使其看起来像:
| Range 1 | Results |
|------------------------|---------|
| www.orange.com | 1 |
| www.orange.example.com | 1 |
| www.example.red.com | 2 |
| www.example.com/blue | 3 |
基本上每次都进行部分匹配,然后将结果返回到右侧。
快把我逼疯了,你是我唯一的希望!
这仅在字符串不包含列表中的多个部分字符串时才有效,但您可以使用部分匹配的行号对查找数组进行INDEX
。
例如:
=IFERROR(
INDEX($B$1:$B$5, CONCAT(IFERROR(
FIND($A$1:$A$5,D5)+ROW($A$1:$A$5)-FIND($A$1:$A$5,D5),
""))),"")
在这里,我们首先生成一个向量,使用FIND
测试查找数组中所有值的位置。 这个向量中除了一个元素之外的所有元素都是#VALUE!
. 其余元素是被测试字符串中第一个与查找数组中的值相同的字符的位置。
接下来,我们通过添加另一个相等大小的连续行号向量,然后减去原始数量,将此值转换为查找数组中的行号。 请注意#VALUE!
上的算术#VALUE!
return 仍然会产生#VALUE!
. 另请注意,上述答案中生成的行号向量( ...ROW($A$1:$A$5)
)必须从第一行开始; 例如,如果您的查找数组从第 3 行开始,您需要执行类似...ROW($A$3:$A$7)-2
才能获得所需的结果。
最后,我们替换任何#VALUE!
返回一个空字符串并连接整个向量。 结果是包含完整字符串中的部分字符串的查找数组的行号。 此行号用于INDEX
以实现所需的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.