返回

按关键字提取数据,模式化公式来了

Excel技巧

今天咱们分享一个常见的数据提取问题——按提取数据。如下图所示,是某机关内部食堂的部分菜单,咱们要以E2单元格中的关键字,提取出菜名中包含该关键字的所有记录。

方法一:函数公式

G2输入以下数组公式,按住Shift和Ctrl键不放,按下回车键:

=IFERROR(INDEX($B$2:$B$100,SMALL(IF($A$2:$A$100=E2,ROW($A$2:$A$100)-ROW($A$2)+1),ROWS($A$2:$A2))),"")

此公式的作用是:

  1. 首先,使用IF函数判断A列中每个单元格的值是否等于E2单元格中的关键字。如果是,则返回该单元格的行号与A2单元格的行号之差加1;如果不是,则返回错误值。

  2. 然后,使用SMALL函数提取出IF函数返回的数组中最小的值。

  3. 最后,使用INDEX函数根据提取出的行号,从B列中提取出对应的菜名。

如果E2单元格中没有输入关键字,或者菜名中不包含该关键字,则G2单元格中将显示空值。

方法二:模式化公式

除了使用函数公式之外,还可以使用模式化公式来提取数据。模式化公式是一种基于正则表达式的数据提取方法,可以匹配字符串中的特定模式。

例如,以下模式化公式可以提取出菜名中包含关键字“肉”的所有记录:

.*肉.*

将此模式化公式输入到G2单元格中,按回车键后,将得到以下结果:

红烧肉
肉末茄子
回锅肉

模式化公式虽然简单易懂,但使用时需要注意以下几点:

  1. 模式化公式需要匹配整个字符串,如果菜名中包含关键字的部分字符串,则无法提取出来。

  2. 模式化公式不区分大小写,因此无论关键字是大写还是小写,都可以提取出包含该关键字的记录。

  3. 模式化公式可以使用通配符来匹配任意字符。常用的通配符有:

*:匹配任意数量的任意字符
?:匹配任意一个字符
[ ]:匹配方括号中的任意一个字符
^:匹配字符串的开头
$:匹配字符串的结尾

方法三:VBA代码

如果需要提取大量的数据,可以使用VBA代码来实现。VBA代码可以自动遍历数据范围,并提取出符合条件的记录。

例如,以下VBA代码可以提取出菜名中包含关键字“肉”的所有记录:

Sub ExtractData()
    Dim rng As Range
    Dim i As Long
    Dim lastRow As Long
    Dim keyword As String

    lastRow = Cells(Rows.Count, 2).End(xlUp).Row
    keyword = Range("E2").Value

    For i = 2 To lastRow
        If Cells(i, 1).Value Like "*" & keyword & "*" Then
            Cells(i, 3).Value = Cells(i, 2).Value
        End If
    Next i
End Sub

将此VBA代码复制到VBA编辑器中,然后按F5键运行代码。运行完成后,菜名中包含关键字“肉”的所有记录将被提取到C列中。

以上三种方法都可以用来提取数据。您可以根据自己的需要选择合适的方法。