Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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_Vba_Excel 2007 - Fatal编程技术网

Excel 如何检查列中的每个单元格,以查看它是否包含来自另一列的任何文本字符串?

Excel 如何检查列中的每个单元格,以查看它是否包含来自另一列的任何文本字符串?,excel,vba,excel-2007,Excel,Vba,Excel 2007,我正在使用Excel中的一个产品数据库,并试图清理和统一制造商参考的方式。数据库大约有9k行,因此不便于手动编辑。数据库中还缺少一些制造商名称——这并不完美 各栏的标题组织如下: SKU(commercial product code) | Commercial Description | Manufacturer Name 行条目的一个示例是: MCO20264 | PAD,BURNISH,27 IN,PK5 | 3M Corp. 目标是编辑“制造商名称”列,以便每次引用制

我正在使用Excel中的一个产品数据库,并试图清理和统一制造商参考的方式。数据库大约有9k行,因此不便于手动编辑。数据库中还缺少一些制造商名称——这并不完美

各栏的标题组织如下:

SKU(commercial product code)  |  Commercial Description  |  Manufacturer Name
行条目的一个示例是:

MCO20264  |  PAD,BURNISH,27 IN,PK5  |  3M Corp.
目标是编辑“制造商名称”列,以便每次引用制造商(例如3M)时,无论是3M公司、3M公司、3M公司等条目所引用的制造商,它都使用相同的名称,例如3M,而不是多个名称。大约有500个不同的制造商名称。许多名称是通过多个名称引用的,但当它们被引用时,它们总是在文本字符串中包含其名称的缩写版本,就像3M总是出现在上面的列表中一样

我已经有了一些同质化的制造商名称。我拥有的同质制造商名称位于单独表格的一列中,由于有多少,我希望引用该列中的单元格,而不是在函数中包含每个名称的单个文本字符串

我试图排除我的所有制造商列表中的任何一行,其中制造商名称单元格在单元格中的任何位置都包含一个同质名称的文本字符串,例如3M,这样我就可以只处理那些缺少同质名称的名称,而这些名称是可以引用的。最终目标是完成同质制造商名称列表,并将其应用到数据库中,以便仅以一种方式引用每个制造商

我尝试了各种方法来包括

"*"A2"*"
在函数中键入表示法以解决此问题,但在此处包含此表示法没有成功


有人知道我该如何解决我的问题吗?

你可以使用公式和搜索函数,比如

=IFERROR(IF(SEARCH("3M",A1,1)>0,"3M",A1),A1)
您可以根据自己的需要对此进行修改

例如,如果您有A1:A6中的数据,下面的数组公式将返回文本中3M所在的行

=SMALL(IF(IFERROR(SEARCH("3M",$A$1:$A$6,1)>0,0),ROW($A$1:$A$6)),ROWS($B$1:$B1))
如果我能进一步提供帮助,请告诉我

编辑进一步的解决方案

如果你有A1:B4中的数据作为替换数据,那么在A中替换的文本,在B中替换的文本,所以3M公司在A中,3M公司在B中。我要搜索的列D是D,所以有各种各样的,比如3M公司,3M亚洲,松下Plc,松下有限公司,那么在E中我有以下公式

=索引($B$2:$B$4,最大值(如果(ISERROR(查找($A$2:$A$4,D2)),-1,行($A$2:$A$4)-1)),1)

希望这有帮助

您可以使用公式和搜索函数来实现,例如

=IFERROR(IF(SEARCH("3M",A1,1)>0,"3M",A1),A1)
您可以根据自己的需要对此进行修改

例如,如果您有A1:A6中的数据,下面的数组公式将返回文本中3M所在的行

=SMALL(IF(IFERROR(SEARCH("3M",$A$1:$A$6,1)>0,0),ROW($A$1:$A$6)),ROWS($B$1:$B1))
如果我能进一步提供帮助,请告诉我

编辑进一步的解决方案

如果你有A1:B4中的数据作为替换数据,那么在A中替换的文本,在B中替换的文本,所以3M公司在A中,3M公司在B中。我要搜索的列D是D,所以有各种各样的,比如3M公司,3M亚洲,松下Plc,松下有限公司,那么在E中我有以下公式

=索引($B$2:$B$4,最大值(如果(ISERROR(查找($A$2:$A$4,D2)),-1,行($A$2:$A$4)-1)),1)

希望这有帮助

你看过微软的吗?这是一段视频。你是想在原始名称旁边加上“已清理”的名称,还是想用“已清理”的名称替换输入的名称?最终替换原始名称。现在我刚刚列出了所有“干净”的名字,我希望用它们来代替那些同质化的名字。你看过微软的吗?这是一段视频。你是想在原始名称旁边加上“已清理”的名称,还是想用“已清理”的名称替换输入的名称?最终替换原始名称。现在,我刚刚列出了所有“清洁”的名称,我希望用它们来替换它们同质化的名称。我不想特别搜索3M,我想引用我已经拥有的同质制造商名称列表中的单元格。我有500个制造商名称,因此在公式中包含任何特定的文本字符串意味着必须对不同的文本字符串重复数百次。您可以使用数组搜索多个项目,对数组进行一些读取,您可以使用类似c1:c6的内容,其中“3M”是,所以类似于if(搜索(c1:c6,a1:a6,1)>0,d1:d6)其中d1:d6是替换值,类似于循环vlookup。我会尽力为你做点什么。不是100%确定我会有时间。尝试了你建议的配方的变体,但无效。我有一个列,每个制造商的名称(非同质化)和另一个同质化的名称,我已经做了。WTV函数需要遍历非同质化列表,查看每个单元格是否在单元格中找到同质化列表中的文本字符串,然后输出有、没有或在其行中指示有或没有的单元格。是否解决了此问题?如果你有A1:B4中的数据作为替换数据,那么在A中替换文本,在B中替换,所以3M公司在A中,3M公司在B中。我要搜索的列D是D,所以有各种各样的,比如3M公司,3M亚洲,松下公司,松下有限公司,然后在E中,我有以下公式=索引($B$2:$B$4,MAX(IF)(iError(FIND($A$2:$A$A$4,D2)),-1,ROW($A$2:$A$4)-1)),1)希望这有帮助。也许我误解了你的意思,但我这里没有这些。我有列A2:A560,其中包含不完整的同质制造商名称(如我希望用作B列中不同名称的同质替换),以及列B2:B185,其中包含每个制造商名称,而不考虑多个制造商名称