Excel 用于查找列中包含其他列文本的行的公式

Excel 用于查找列中包含其他列文本的行的公式,excel,excel-formula,Excel,Excel Formula,我在Excel中有两列,A和B。 我需要找到所有行,也就是说,将它们放在B的另一列中,该列包含A列中任何单元格的全部内容。例如,假设A包含: apple banana I like apples I like pears I like bananas 和B包含: apple banana I like apples I like pears I like bananas 然后我想在C列中看到以下几行: I like apples I like bananas 我想要一种只使用Excel

我在Excel中有两列,A和B。 我需要找到所有行,也就是说,将它们放在B的另一列中,该列包含A列中任何单元格的全部内容。例如,假设A包含:

apple
banana
I like apples
I like pears
I like bananas
和B包含:

apple
banana
I like apples
I like pears
I like bananas
然后我想在C列中看到以下几行:

I like apples
I like bananas
我想要一种只使用Excel公式的方法。提前谢谢


注:如果A包含类似pea的内容,B包含spearmint,则短语I like spearmint将出现在C列中-以上只是一个示例

关于所需公式复杂性的评论是正确的,因为它需要一些2D数组的中间计算。但这里是FWIW

在C1中输入以下公式,然后按 CTRLSHIFTTENTER然后复制/粘贴以填充C列查看示例图以了解更多详细信息:

C1:
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($1:$99)/
  (ISNUMBER(SEARCH(TRANSPOSE("*"& $A$1:$A$4 & "*"), $B$1:$B$99))),ROW(1:1))), "")
CtrlShift输入


关于所需公式复杂性的评论是正确的,因为它需要一些2D阵列的中间计算。但这里是FWIW

在C1中输入以下公式,然后按 CTRLSHIFTTENTER然后复制/粘贴以填充C列查看示例图以了解更多详细信息:

C1:
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($1:$99)/
  (ISNUMBER(SEARCH(TRANSPOSE("*"& $A$1:$A$4 & "*"), $B$1:$B$99))),ROW(1:1))), "")
CtrlShift输入


此外,为了其他可能使用此问题及其答案的人,我选择将我的问题保持一般性,但我可以添加一些细节,以便在需要时更容易回答。不,我们认为这是不可能的。我将编辑我的问题,以明确说明您可能只能使用Excel公式来实现这一点,但我怀疑这些公式将非常复杂,难以支持和维护。我建议你研究VBA和正则表达式。这条路线可以为你解决问题。公平地说,我会四处寻找一种方法来解决这个问题,因为我对PythonAlso的了解非常有限。所以,为了其他可能使用这个问题及其答案的人,我选择将我的问题概括起来,但我可以添加一些细节,以便在需要时更容易回答。不,我们认为这是不可能的。我将编辑我的问题,以明确说明您可能只能使用Excel公式来实现这一点,但我怀疑这些公式将非常复杂,难以支持和维护。我建议你研究VBA和正则表达式。这条路线会为你解决问题。公平地说,我会用我对PythonExcellent有限的知识四处寻找一种方法来实现这一点——我有一些想法认为这会很困难,但我没想到会如此复杂。它对我来说很好,但我试图理解它背后的逻辑——对于A$A4部分,这是因为本例中A列的长度是4吗?@Koloktos,这是正确的;如果列A的关键字范围包含空单元格,则该公式无效。另一方面,B列上的限制99只是为了减少计算时间。这个公式的作用是,它计算a中关键字和B中句子之间的匹配矩阵,然后对矩阵中匹配项的行进行索引,这是行1:1的目标,每行增加一行,以找到下一个匹配项。很好-我有一些想法,这会很难,但我没想到会这么复杂。它对我来说很好,但我试图理解它背后的逻辑——对于A$A4部分,这是因为本例中A列的长度是4吗?@Koloktos,这是正确的;如果列A的关键字范围包含空单元格,则该公式无效。另一方面,B列上的限制99只是为了减少计算时间。该公式的作用是,它计算a中的关键字和B中的句子之间的匹配矩阵,然后对矩阵中匹配项的行进行索引,这是行1:1的目标,它将在每行增加以找到下一个匹配项。