夜雨聆风学习资料网

ARTICLE · 978219

218、Excel365正则函数一次获取多列数据信息

218、Excel365正则函数一次获取多列数据信息
     正则函数可以帮助我们处理比较杂乱的文本信息,在此介绍使用正则函数整理并获取多列数据信息。
      如下图所示在内容列中记录了某次考试各学生的相关信息,现在需要将各学生的相关信息按右侧的表格进行整理。通过观察可以看到,A列内容中放置的学生信息是杂乱的,格式不尽相同。使用分列之类的方法显然是行不通的,使用正则函数即可轻松完成。
在C2单元格输入以下公式:
=HSTACK(        IFERROR(                REGEXEXTRACT(A2:A11,                             HSTACK(                                    C1&"\K[\d.]+",                                    D1&"\K[一-龟]+",                                    E1:J1&"\K[\d.]+"                                    )                              ),               ""),         BYROW(               IFERROR(                       REGEXEXTRACT(                                    A2:A11,                                    E1:J1&"\K[\d.]+")*1,                      ""),                SUM)         )
公式返回的结果如下图所示:
公式分析:
一、公式总体分为两部分:
通过正则函数获取的各学生关信息及通过正则表达式提取各科目成绩后得到的和,这两部通过最外层的HSTACK函数水平连接。
二、提取各学生相关信息部分:
IFERROR(REGEXEXTRACT(A2:A11,HSTACK(C1&"\K[\d.]+",D1&"\K[一-龟]+",E1:J1&"\K[\d.]+")),"")”部分为提取各学生相关信息,正则表达式支持数组形式,“A2:A11”为要实施正则表达式的单元格区域,公式会自动溢出到相关行;C1&"\K[\d.]+"表示匹配C1单元格(也就是学号)然后提取后边的数字,“\K”表示不包含前边的匹配内容,也就是学号,[\d.]+表示数字开始的连续数字,可能会有小数点,所以在d后加“.”;D1&"\K[一-龟]+"就表示匹配到姓名后提取姓名后的文本,从而提取姓名;E1:J1&"\K[\d.]+")表示匹配各科目然后提取后边的数字,从而获取各科成绩。
三、计算各学生各科目成绩总和部分:
BYROW(IFERROR(REGEXEXTRACT(A2:A11,E1:J1&"\K[\d.]+")*1,""),SUM)”部分为提取各科成绩后按行求和,也就是各学生各科成绩总和,E1:J1&"\K[\d.]+")*1后边的“*1”是因为正则函数提取的是文本型数字,要求和则需要转换为数值。
思维练习:
有兴趣的朋友可以试试用正则函数提取下图中的个信息:
有兴趣但暂无思路的朋友,可以参考下述公式,根据公式逐步理解其中含义。
C14单元格中输入的公示为“=REGEXEXTRACT(A14:A16,HSTACK(C13&"\K[一-龟]+",D13&"\K[\d]+",E13&"\K[a-zA-Z0-9_+-]+(\.[a-zA-Z0-9_+-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z]{2,}"))”;公式返回结果如下图所示:

相关学习资料

返回首页浏览学习资料