按关键字提取数据,模式化公式来了
2023-11-26 17:04:18
今天咱们分享一个常见的数据提取问题——按提取数据。如下图所示,是某机关内部食堂的部分菜单,咱们要以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))),"")
此公式的作用是:
-
首先,使用IF函数判断A列中每个单元格的值是否等于E2单元格中的关键字。如果是,则返回该单元格的行号与A2单元格的行号之差加1;如果不是,则返回错误值。
-
然后,使用SMALL函数提取出IF函数返回的数组中最小的值。
-
最后,使用INDEX函数根据提取出的行号,从B列中提取出对应的菜名。
如果E2单元格中没有输入关键字,或者菜名中不包含该关键字,则G2单元格中将显示空值。
方法二:模式化公式
除了使用函数公式之外,还可以使用模式化公式来提取数据。模式化公式是一种基于正则表达式的数据提取方法,可以匹配字符串中的特定模式。
例如,以下模式化公式可以提取出菜名中包含关键字“肉”的所有记录:
.*肉.*
将此模式化公式输入到G2单元格中,按回车键后,将得到以下结果:
红烧肉
肉末茄子
回锅肉
模式化公式虽然简单易懂,但使用时需要注意以下几点:
-
模式化公式需要匹配整个字符串,如果菜名中包含关键字的部分字符串,则无法提取出来。
-
模式化公式不区分大小写,因此无论关键字是大写还是小写,都可以提取出包含该关键字的记录。
-
模式化公式可以使用通配符来匹配任意字符。常用的通配符有:
*:匹配任意数量的任意字符
?:匹配任意一个字符
[ ]:匹配方括号中的任意一个字符
^:匹配字符串的开头
$:匹配字符串的结尾
方法三: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列中。
以上三种方法都可以用来提取数据。您可以根据自己的需要选择合适的方法。