在Excel中寻找公式来搜索特定模式


-1

我找公式搜索“字”与特定的字母图案,像INNSA1INMAA4INPTPB,这里所说的开头IN和结尾416,或B。单词总是正好是六个字符,字母可以是大写或小写。

Excel单元格的集合每个包含一个句子,在该句子中将找到一个或多个这样的单词(总是至少一个)。例如:

  • 我的自定义位置是INNSA1
  • 我在INMAA4工作
  • 我想去INDEL6
  • INNSAB是寄宿地点

单词(或多个单词,如果有多个)可以位于句子中的任何位置。目标词将始终是单独的词,而不是较大词的一部分。

对于每个句子(即单元格),我想搜索是否存在与所描述的字母模式相匹配的单词,并将该单词作为值返回。


2
投票否决了所有资本。强烈建议您编辑。
迈克尔·哈维

我对您的要求并不十分清楚。您是否要寻找“单词”(即仅包含字母数字的字母/字母/数字,但不包含空格或其他种类的字符)的存在(真/假),匹配模式(以开头IN,以4, 1, 6,或b),可以包含在单个单元格中的“句子”中的任意位置,但可以通过空格或标点符号与其分隔吗?它是否总是一个单独的“单词”,还是可以嵌入更长的“单词”中的字符串?(续)
fixer1234 '18

总是正好是6个字符吗?字母总是大写吗?“句子”是什么样的?“单词”是否可以多次出现,包括作为较大单词的一部分?如果您包含代表条件范围的句子示例,这将更容易理解。
fixer1234 '18

另外,正如加里(Gary)的学生所解释的,这个词是单元格中唯一的东西,还是在单元格中其他文本的某个地方(这是非常不同的要求)?
fixer1234 '18

我想搜索单元格中句子中的特定模式。例如“我的自定义位置是INNSA1”或“我在INMAA4工作”或“我想去INDEL6”
ajit maurya

Answers:


0

这只是您可以适应模式的一个示例。

使用从A2A26的数据,在B2中输入:

=IF(AND(LEFT(A2,2)="IN",OR(RIGHT(A2,1)="B",RIGHT(A2,1)="1",RIGHT(A2,1)="4",RIGHT(A2,1)="6")),1+MAX($B$1:B1),"")

并向下复制:

在此处输入图片说明

如您所见,每一项“好”数据都标有一个简单的顺序索引。


0

解决问题的每种方法有很多,但是需求的组合指出了一种简单明了的方法或VBA解决方案。非VBA解决方案使用助手列。电子表格的布局以及其他因素(例如句子数和可能的结果数,以及您需要和希望如何使用结果)等其他因素均未知。因此,此答案将比特定的解决方案更具通用性。

使用函数,搜索句子中可能有多个目标的过程将很复杂。一种更简单的方法是将句子分解为单词,然后检查单词。解析句子的一种简单方法是使用内置的“将文本转换为列”向导。

假设句子在A列中,则将接下来的几列留空以获取结果。这样,您的结果将始终位于数据旁边可见的已知位置。我假设最多两个,所以列B和C将包含结果值。

计算一个句子中可以包含的最大单词数,并为帮助者列保留许多后续列。这些将用于测试每个单词。假设您允许输入五个字。D:H列将包含分别指向I:M列的公式。

假设第2行是您的第一个数据行,因此第一个公式将在D2中,指向I2。该公式将类似于Gary的学生所建议的内容:

=IF(AND(LEFT(I2,2)="IN",OR(RIGHT(I2,1)="B",RIGHT(I2,1)="1",RIGHT(I2,1)="4",RIGHT(I2,1)="6")),1,0)

替代公式为:

=IFERROR((LEFT(I2,2)="IN")*(SEARCH(RIGHT(I2,1)," 416b")>1),0)

这只是给您一些有关如何判断目标单词是否适合该模式的想法。第二个公式使用SEARCH(因为它不区分大小写)来查看列表中的最后一个字符。测试的前两个字符IN和最后一个字符,每个结果为True或False,Excel 分别将它们视为10。所以,如果这两个测试是真实的结果1,否则0

在SEARCH表达式中,我从一个空格开始,然后测试结果> 1。我这样做的原因是因为我使用MS Office Online对其进行了测试,并且它认为在测试字符串的位置1中找到了一个空单元格的最右边字符。

如果SEARCH未找到匹配项,则返回错误,因此将公式包装在IFERROR中可确保任何不匹配的词都在中产生0

因此,无论1单词是否适合您的模式,公式都会返回,或者单词不适合0(或者目标单元为空)。

在D2中输入任一公式,然后将其拖动或复制到H2,然后向下拖动到所需的最后一行。

要填充目标单元格,请选择A列中的所有数据,然后将其复制并粘贴到I列中(“ Text to Columns”将覆盖数据并从data列开始)。在I列中选择数据。在Data选项卡上的Data Tools组中,单击Text to Columns。您将获得一个不言自明的向导。

告诉它数据已定界,然后选择space作为定界符。它将为您提供预览,让您预览如何解析单词。完成向导后,它将把每个单词放在该行的连续单元格中。

您在D:H中的公式应1在每行中至少显示一个。这些是您的单词,它们的列与已解析单词的相对位置相同。

要获得B列中第一个单词的值,请使用INDEX和MATCH 1在D:H的行中查找第一个单词,并从I:M的同一行中检索相应的值。例如,B2为:

=INDEX(I2:M2,MATCH(1,D2:H2,0))

这将从I2:M2中的单元格中检索到与1D2:H2中找到精确匹配位置相对应的值。

要获得列C的后续值(如果有两个以上,则要大于此值),有许多解决方案可以找到第N个匹配项1。这是一种方法的链接

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.