![](/img/trans.png)
[英]is there any way to copy column values from one sheet to another sheet as row based on sheet one grouping
[英]Check if any values of one column contains any values from another column
因此,我有一个公式一直在使用,以查看一列中的任何单元格是否与另一组值中的任何单元格相匹配(在另一个称为公司的工作表中):
=IF(ISERROR(VLOOKUP(K1,companies!A:A,1,FALSE)),"Keep","Delete")
现在,我尝试做完全相同的事情,只是现在,我想查看是否有任何单元格包含单元格的任何子字符串(companies!A:A),而不是匹配。 不确定如何执行此操作。
=IF(ISERROR(VLOOKUP(CONCATENATE("*",K1,"*"),companies!A:A,1,FALSE)),"Keep","Delete")
只需将您的K1
引用更改为CONCATENATE("*",K1,"*")
,即可基于vlookup通配符。
这是一张显示此工作方式的图像,尽管将其修改为一张纸。 您会看到一个,四个和五个被删除,因为它们包含在列表中,但不完全包含在列表中。
编辑因此,在评论中进行了一些讨论之后,发现以上内容是对需求的一种误解。 这个问题实际上是想知道某个值是否包含另一列中的任何字符串,这在问题上要困难得多-但这使我感到烦恼,所以我进行了研究,我认为我有所收获这样可行。
公式如下:
=IF(OR(ISNUMBER(SEARCH("*"&$H$2:$H$14&"*",I2))),"Delete","Keep")
必须使用CTRL-SHIFT-ENTER输入它,以使其成为数组函数才能工作
还必须明确定义引用列(即H#:H#,而不是H:H),否则所有内容将返回true,因为数据下方的空白单元格将匹配任何内容。
话虽如此,您将知道它是一个数组函数,因为它将在公式栏中的公式两边带有方括号,如下所示。
我强烈建议您浏览“评估公式”工具,以了解自己的工作方式,但是我将在下面以匹配行的示例为依据,对其进行详细说明,因为它更加明显。
首先,excel将您的引用和连接评估为单元格值的数组,并将您的引用替换为要搜索的字符串,因此我们得到如下信息:
=IF(OR(ISNUMBER(SEARCH({"*john*";"*jack*";"*fake*";"*bill*";"*bob*";"*test*";"*blah*";"*hey*";"*words*";"*ten*";"*eleven*";"*jim*";"*susie*"},"fake@example.org"))),"Delete","Keep")
然后,Excel将针对您要搜索的字符串对每个术语进行搜索,这将返回结果的数组。 没有匹配项时,注释搜索将返回“ #VALUE”。
=IF(OR(ISNUMBER({#VALUE;#VALUE;1;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE})),"Delete","Keep")
然后,Excel对这个数组执行IsNumber,然后再次将True / False结果存储在数组中。
=IF(OR({FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}),"Delete","Keep")
然后,我们添加了OR,它将对数组求值,如果任何结果为True,则返回True,然后对If求值。
似乎可以正常工作,尽管性能可能会影响大型数据集。 这种东西将更适合某种SQL工具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.