专栏名称: Excel之家ExcelHome
excel技巧原创教程每日推送,excel表格职场模板干货仓库,图文/视频/动画等多种教学方式分享excel操作技巧教程/excel函数公式教程/excel数据透视表教程/excel图表教程/Word教程,助您轻松提高办公效率!
目录
相关文章推荐
完美Excel  ·  朱明勇律师的《刑辩私塾》 ·  2 天前  
Excel之家ExcelHome  ·  数据填充的8个典型应用,全都会的请举手 ·  4 天前  
完美Excel  ·  再谈查找最后使用的行或列 ·  1 周前  
Excel之家ExcelHome  ·  金额显示没烦恼,就怕兜里钞票少 ·  1 周前  
完美Excel  ·  VBA:自动调整列宽,但设置一个限制 ·  1 周前  
51好读  ›  专栏  ›  Excel之家ExcelHome

从混合内容中提取字符,REGEXP函数最拿手

Excel之家ExcelHome  · 公众号  · Excel  · 2024-11-06 07:45

正文

REGEXP函数函数是WPS表格中的特有函数之一,能够根据正则表达式对字符串进行提取、判断或替换。函数语法为:
=REGEXP(要处理的字符串,正则表达式,[匹配模式],[替换内容])

如下图,希望从A列混合内容中提取出电话和姓名
B2单元格输入以下公式,向下复制,提取出电话号码:
=REGEXP(A2,"[0-9]+")
公式中的 [0-9]+,表示连续数字。

如下图,希望提取出A列单元格中的费用总金额。
B2单元格公式输入以下公式,向下复制。
=SUM(1*REGEXP(A2,"[0-9.]+(?=元)"))

公式中的[0-9.]+ 表示包含小数点的连续数字,(?=元)表示字符“元”之前的内容。

如下图,希望从A列混合内容中,提取首个中文字符之前的全部内容。
B2单元格输入以下公式,向下复制。
=REGEXP(A2,"^[^一-龟]+")
公式中的第一个^表示字符开头。中括号中的^表示“非”,[^一-龟] 表示连续的非中文字符。
^[^一-龟]+,即表示字符开头部分的连续非中文字符。

如下图,希望根据A列中的混合内容计算体积。
B2单元格输入以下公式,向下复制。
=PRODUCT(1*REGEXP(A2,"[\d]+"))
公式中的[\d]+,作用等同于[0-9]+,表示0-9的连续数字。
REGEXP将各个连续数字依次提取出之后,先用乘以1的方式转换为数值,再使用PRODUCT函数计算各个数值的乘积。

如下图,希望提取A列混合内容中括号内的颜色信息。
B2单元格输入以下公式,向下复制。
=REGEXP(A2,"(.*)")

公式中的小数点.表示任意字符,星号*是量词,表示前面的点号.可以出现零次或多次。(.*)表示全角括号及括号内的内容。

如需仅提取括号内的颜色,可以使用以下公式:

=REGEXP(A2,"(?<=()...")

用半角括号包含的?<=(部分,表示要提取字符左括号后的内容。
三个小数点,表示提取三个字符。(?<=()...就是提取左括号后的三个字符
如果括号内的颜色字符数不固定,可以使用以下公式提取括号内的字符:
=REGEXP(A2,"(?<=().*(?=))")

(?<=()部分表示提取左括号后的内容,.*表示不固定的字符数,(?=))部分表示提取右括号前的内容。

如下图所示,希望从A列混合内容中,按支付方式提取出对应的金额。
B2输入以下公式:
=IFERROR(REGEXP(A2:A5,B1:D1&"\K[0-9.]+"),)

公式中的A2:A5部分是要处理的单元格。

B1:D1&"\K[0-9.]+"部分,用B1:D1单元格区域中的支付方式与"\K[0-9.]+"连接,表示分别提取以B1:D1开头的连续数字。

最后用IFERROR函数,屏蔽A列没有对应支付方式时返回的错误值。

也可以使用以下公式,

=IFERROR(REGEXP(A2:A5,"(?<="&B1:D1&")[0-9.]+"),)

好了,今天的内容就是这些吧,祝各位一天好心情~

图文制作:祝洪忠

1、点击或搜索微信公众号【 Excel之家ExcelHome】到公众号首页。

2、点击右上角【···】,在下拉菜单中点击【设为星标】。

设置星标后,小伙伴们就不用担心错过咱们的推送了!

设为星标,精彩内容不错过