Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何从条件表中搜索字符串并从中返回值?_Excel_Excel Formula - Fatal编程技术网

Excel 如何从条件表中搜索字符串并从中返回值?

Excel 如何从条件表中搜索字符串并从中返回值?,excel,excel-formula,Excel,Excel Formula,我需要从搜索条件表中设置的字符串返回值。该表包含用于查找字符串的部分字符串 Wksht1 Wksht2(Criteria) A Result A B C Result Change Roller Type 1(from Criteria) Change Roller Type 1 Pkg NG

我需要从搜索条件表中设置的字符串返回值。该表包含用于查找字符串的部分字符串

Wksht1                                 Wksht2(Criteria)
A              Result                  A      B      C      Result
Change Roller  Type 1(from Criteria)   Change Roller        Type 1
Pkg NG                                 Pkg    NG            Type 2
Lid NG                                 Lid    Dent          Type 3
结果应在结果列的Wksht1中。

任何帮助都将不胜感激。事先非常感谢你

编辑:

较长的字符串版本

Wksht1                                 
A                                       Result
Assemble NG and Lid dent                Type 3
Change roller and do camera setting     Type 1
Change spec and lid are dent            Type 3

为了更好地识别,我必须将关键字分开。

使用VLookup公式可以非常快速地处理这种情况。wroksheet2的A列和B列中提到的字符串似乎是工作表1的A列的子字符串

You want to search the of the string of column A of the worksheet in column A, B of worksheet2
Step-1: concatenate the column A & B of worksheet2 into column C as =concatenate(A1," ",B1)
Step-2: apply vlookup in the column B of the worksheest1 to get the result from the worksheet2 
formula can be applied in B1 as 
=vlookup(A1,Sheet2!C:Sheet2!D,2,0)

假设您有以下命名范围,您将在工作表1的b列中得到结果:

  • C_A是标准表A列中的关键词
  • C_B是标准表B栏中的关键词
  • C_C是标准表C栏中的关键词
  • 结果是标准表中“结果”列中的类型
在结果表的单元格
B2
中输入以下公式(假设列表从单元格A2开始):

请注意,这是一个数组公式,因此在公式栏中输入上述公式后,需要按Ctrl+Shift+Enter进行确认

将其向下拖动以跨应用,如下所示:

用于测试的样本数据:

| Strings                                       |
|-----------------------------------------------|
| Assemble NG and Lid dent                      |
| Change roller and do camera setting           |
| Change spec and lid are dent                  |
| dent liD roller changeable                    |
| Test1 xxx lid xx pkG x ng xxxxx xxxxxxx Test3 |
| xxx Test1 x pkG xxxxxx  xxx Test2 test3       |
| Change xxxxxx test1 xxx test2 xx Test4        |
| Change Test1 xxxx Lid xxxx NG xxx controller  |
| Pkg Ngyuent Test1 Test21                      |
逻辑是向每个关键字添加一个独特的符号,如hashtag
#
,并将其转换为
#keyword#
,然后通过字符串搜索第一列关键字,并返回单词的位置(如果存在),然后从上一次搜索的字符串的其余部分中搜索第二列关键字,并返回第二个关键字(如果存在)的位置。然后找出剩余字符串中是否有第三个关键字。如果是,则返回相应的结果

下面是我的解决方案的一个限制,它可能会破坏交易。例如,如果您已经有
A-Test1;B-Test2
作为Type4的一个关键字组合,并具有
A-Test1的另一个组合;B-Test2;C-Test3
对于类型5,具有较少关键字的组合必须位于具有三个关键字的组合上方的行中。原因是,如果前两个关键字相同,我的公式将始终返回条件表中最后一个关键字的组合。解决方法是重新安排标准表,确保3个关键字组合始终位于2个关键字组合之后


如果你有任何问题,请告诉我。干杯:)

请确认您的Wksht2上有四列分别为A、B、C和结果?您希望为
更改滚轮返回类型1
基于什么标准?还有,到目前为止,我相信你可以在网上甚至这里找到类似的案例。我在网上看到的大多数案例都是由一维数组组成的。条件表应该是A1+B1+C1(包含在字符串中),然后返回类型1的结果。要用于的字符串长度可能超过此处提供的长度。您是否能够使用更真实的示例更新示例数据(更长的字符串可能会有变化),并基于新的示例数据提供更多预期结果?你可以用它来导入一个样本表,然后将转换后的表粘贴到你的帖子中。我已经编辑了解释,以包含实际记录。谢谢你的回复。字符串是否都是空格分隔的,或者是否有特殊符号,如逗号?另外,如果第一个字符串中也有“pkg”,它应该返回type2还是type3呢?或者不会有这样的场景?我很抱歉不能合并关键字,因为实际情况是基于单独的关键字。为了更好的理解,我已经编辑了解释。谢谢你的回答。在这件事上它真的对我有帮助。@zefy2k5别担心。我感觉实际情况可能不像我预期的那样复杂,所以我的解决方案可能过于复杂。但是,如果您是一位经验丰富的excel用户,您可以修改解决方案或获取有用的信息以适应您的情况。
| Strings                                       |
|-----------------------------------------------|
| Assemble NG and Lid dent                      |
| Change roller and do camera setting           |
| Change spec and lid are dent                  |
| dent liD roller changeable                    |
| Test1 xxx lid xx pkG x ng xxxxx xxxxxxx Test3 |
| xxx Test1 x pkG xxxxxx  xxx Test2 test3       |
| Change xxxxxx test1 xxx test2 xx Test4        |
| Change Test1 xxxx Lid xxxx NG xxx controller  |
| Pkg Ngyuent Test1 Test21                      |