0

A 列包含不同的文本 - 大约 1000 个条目,但相同的文本将出现在不同的单元格中。

在第二个单独的列(G 列)= 一个单独的表格中,每个单元格包含多个设置文本字符串之一(每个可以是 2 到 5 个字符长)。一共20个左右。

我想为 G 列中的每个文本字符串搜索 A 列中每个单元格的开头,如果存在(比如 G3 的内容),我希望 G3 的内容显示在 B 列中与列中匹配的单元格相同的行中一个。

由于要匹配的文本同时包含 ASC 和 SC 以及在 * 上的进一步单个字符匹配(尽管我可以排除 * 如果这给出了更简单的结果),因此问题变得复杂了。

例子

A 列包含
ASC1 HHHH........
ASC2 IIII........
ASC2 AAAA.......
SC2 JJJJ....
TRIAL HOLE........
TRIALHOLE......
OP1 MMMM ...
ASC1COMPLEX
KAN1
PS BAN
*TTC Jiokl jj

G 列
ASC1
ASC2
*
OP1
PS
SC2
试用
验证

所以 B 列应该显示
ASC1
ASC2
ASC2
SC2
TRIAL
TRIAL
OP1
ASC1
0 (或其他一些错误/省略值)
PS
*

(如何才能做到这一点?我试图从互联网上调整各种解决方案但失败了。

非常感谢戴夫

4

2 回答 2

3

假设G2:G20包含搜索字符串 - 如果您可以按长度顺序列出它们(最短的在前),那么给定您的样本值,列表将以

* PS OP1 SC2 ASC1 ASC2 试用验证

然后在B2中使用这个公式复制下来

=LOOKUP(2^15,FIND(G$2:G$20,A2),G$2:G$20)

G2:G20应完全填充或调整使用的范围 - 匹配区分大小写,如果没有匹配则返回 #N/A

如果您想在 G2:G20 中允许空白,请使用此版本

=LOOKUP(2^15,FIND(G$2:G$20,A2)/(G$2:G$20<>""),G$2:G$20)

于 2013-11-07T15:12:08.500 回答
0

如果您在 G 列中每个字符串的末尾放置一个星号,则此方法有效。星号是一个通配符,它​​允许 MATCH() 函数根据字符串以及可能跟随的任意数量的字符进行搜索。

将此粘贴到单元格 B1 中。

=IF(ISNA(MATCH($G$1,A1,FALSE)),"",LEFT($G$1,SEARCH("*",$G$1,1)))&IF(ISNA(MATCH($G$2,A1,FALSE)),"",LEFT($G$2,SEARCH("*",$G$2,1)))&IF(ISNA(MATCH($G$3,A1,FALSE)),"",LEFT($G$3,SEARCH("*",$G$1,1)))&IF(ISNA(MATCH($G$4,A1,FALSE)),"",LEFT($G$4, SEARCH("*",$G$1,1)))&IF(ISNA(MATCH($G$5,A1,FALSE)),"",LEFT($G$5, SEARCH("*", $G$5,1)))

您必须重复 "&IF(ISNA(MATCH($G$5,A1, FALSE)), "", LEFT($G$5,SEARCH("*",$G$5,1)))" 部分G 列中的每个单元格,其中您有一个要搜索的字符串。

然后双击单元格右下角的十字准线,将 B1 中的公式一直向下复制。

如果不匹配,这将不会在单元格中放置任何内容。它也不区分大小写,但我会第一个承认,如果您的数据是全部大写的,那么请选择上面的答案。它更简单。

于 2013-11-07T15:18:05.037 回答