鲜为人知但很有用的函数——filterxml

你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天来分享一个冷门函数filterxml的用法,此函数的用法是由很多人(包括我)敬仰的海鲜老师所创。在我的心中,海鲜老师就是宝藏级别的存在。

filterxml这个函数在某些情况下是很有用的,我也是花了大半个月的时间才学到了一些基础用法,就来简单分享一下。

-01-

函数说明

FILTERXML函数使用指定的xpath从XML内容返回特定数据。有2个参数,语法如下:

FILTERXML(xml, xpath)

第1参数xml:是有效的xml格式的字符串。

第2参数xpath:是标准的xpath格式的字符串。

这么说,相信各位小伙伴还是一头雾水,这很正常,我刚学的时候也是这样的感觉。因为这里又涉及两个新的概念:一个是xml,一个是xpath。
什么是xml?xml是一种可扩展标记语言,用来传输和存储数据。简单来理解就是一种树状结构的标签语言。
什么是xpath?xpath是一种在xml文档中查找信息的语言,它使用路径表达式来选取xml中的一些信息。这些路径表达式和我们电脑系统中使用的路径很相似,比如"c盘/某某文件夹/某某文件"。

-02-

示例解释

下面通过一个简单的示例让大家了解一下xml和xpath。

    <a>excel   <b>太难了</b></a>

    上图就是一个简单的xml,有a标签和b标签。标签用尖括号表示,有开始标签<a>和结束标签</a>。并且b标签包含在a标签中。
    xpath是路径表达式,比如"a/b"就是一个xpath,表示a标签下的b标签的文本内容。如下图所示,filterxml用"a/b"这个xpath从A1单元格的xml中提取出b标签的内容“太难了”。

    因xml和xpath各自包含的内容非常多,所以今天我不想也不能讲很多,毕竟还是要看大家喜不喜欢,要不然白写了。

    今天主要是想通过实例,让大家了解下filterxml可以干什么。如果你看完它的用法,觉得有用,想要继续学习,可以给文章点赞。我将根据点赞数决定是否更新它的详细用法。


    -03-
    具体应用

    1.像vlookup一样查找

    下图左表是数据源,现要根据E3单元格的姓名查找对应的性别,结果如F3所示。在F3单元格输入下面的公式:

    =FILTERXML("<a "&TEXTJOIN({"='","' "},,A3:B11)&"'/>","//@"&E3)

    需要注意公式中的单引号和空格,还需要有textjoin函数,filterxml常与textjoin、substitute组合使用。

    2.一对多查找

    下图左表是数据源,要根据D16单元格的商店查找出它都有哪些水果,结果如E16:E22所示。选中E16:E22,输入下面的公式,按ctrl+shift+enter三键结束。此公式为区域数组公式。

    =IFNA(IF(ROW(),FILTERXML("<a><b "&TEXTJOIN({"='","'/><b "},,A16:B27)&"'/></a>","//@"&D16)),"")

    3.提取不重复值

    下图A列是一些部门,有重复的数据。现在要提取不重复的部门,结果如D列和E列所示。D列是区域数组公式,选中D32:D37,输入下面的公式,按ctrl+shift+enter结束。

    =IFNA(IF(ROW(),FILTERXML("<a><b>"&TEXTJOIN("</b><b>",,A32:A43)&"</b></a>","a/b[not(preceding::*=.)]")),"")

    4.分列

    下图A、B两列是数据源,现要将B列的成员分列出来,结果如C、D、E列所示。在C48单元格输入下面的公式,右拉下拉。

    =FILTERXML("<a><b>"&SUBSTITUTE($B48,"、","</b><b>")&"</b></a>","a/b["&COLUMN(A1)&"]")

    5.提取成员姓名及最高分

    下图A、B两列是数据源,其中B列是不规范数据。现在要提取各部门成员姓名和最高分,结果如C列和D列所示。

    提取成员姓名的公式为:在C56单元格输入下面的公式,下拉填充。

    =FILTERXML("<a>"&SUBSTITUTE(SUBSTITUTE(B56,":","<b>"),"、","</b>、")&"</b></a>","a")

    提取最高分的公式为:在D56单元格输入公式,下拉填充。

    =FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(B56,":","、"),"、","</b><b>")&"</b></a>","a/b[not(//b>.)][.*0=0]")

    (0)

    相关推荐

    • Excel技巧—一个公式实现中英文翻译

      点赞再看,养成习惯: 金玉其外,败絮其中. 接着上一章用Excel实现汉字转拼音,不禁让小编想到那是否可以用Excel实现中英文翻译呢? 毕竟现在中国发展越来越快,和国际间交流越来越多,可能有些人的领 ...

    • Excel实战技巧103:使用FILTERXML()通过位置提取单词

      excelperfect 本文介绍FILTERXML函数的一个奇特用法. 假设在单元格中有一些文本(句子/短语/关键字,等),你想要提取其中的第n个单词,然而Excel并没有SPLIT函数,那就需要编 ...

    • FILTERXML函数用过没?

      今天给大家聊一个比较陌生的函数:FILTERXML 语法格式:FILTERXML(xml, xpath) 这个函数有两个必需的参数,第1参数是有效的xml格式的字符串,第2参数是指定的xpath. 正 ...

    • countif函数很有用,各种用法学起来!

      你好,我是刘卓.欢迎来到我的公号,excel函数解析.今天来分享下countif函数的一些用法.countif函数是一个强大的统计函数,在工作中有着广泛的应用. 它主要用于统计满足某个条件的单元格数量 ...

    • 这个Excel冷门函数,95%的人不知道却很有用!

      每天一点小技能 职场打怪不得怂 编按:TRIMMEAN作为专业的评分函数存在在Excel众多函数之间,常常被忽略.但当我们想用时却常常想不起它,那,是否还有别的函数也有同样方便快捷的效果呢?今天,小E ...

    • Excel中那些奇怪的函数之很有用的随机函数

      我们,让Excel变简单 在Excel的好几百个函数中,有一些比较奇怪的函数.其中,随机数函数可以称为最奇怪的函数了.它奇怪之处在于看上去没什么用(是啊,谁没事弄个随机数玩),但是其实很多应用场景还离 ...

    • Aggregate — 这个被大多人忽视了的Excel函数,却很有用

      我敢打赌,大多数人并不知道Excel中有这个函数.这是一个汇总类函数.这个函数是干什么的呢?实际上差不多它干事情的就是SUM,COUNT,AVERAGE之类函数干的事情,只不过使用Aggregate时 ...

    • 这几个求和函数公式对财务工作很有用!很多人不会,你会吗?

      财务工作有很多计算工资,Excel函数公式可以帮助我们提高工作效率. 一.逐项累计求和 问题:如图E5-1所示,需要求累计数,在C列输入函数公式. 其实这函数公式很简单,根本不需要借助辅助列或多复杂的 ...

    • 机电安装如何创优?这份工艺策划很有用!64页PPT可下载!

      机电工程联盟 机电那些事儿 公众号 来源:建筑工程鲁班联盟 编制:中建三局 如有侵权,请联系删除 文末附下载方式 机电安装工程包括了电气工程.弱电智能化工程.通风空调工程.给水排水工程等多个分部,囊括 ...

    • 112岁老中医的临终馈赠,有病无病都看看,很有用

      老中医的临终馈赠,太棒了!共100条,条条哲理性都很强,一定要反复多读,提高对健康的正确认识! 1.记住:睡觉是养生第一要素.睡觉的时间应该是晚21:00-早3:00.因为这个时间是一天的冬季.冬季主 ...

    • 机电安装如何创优?这份工艺策划很有用!

      来源:建筑工程鲁班联盟 编制:中建三局 如有侵权,请联系删除 文末附下载方式 机电安装工程包括了电气工程.弱电智能化工程.通风空调工程.给水排水工程等多个分部,囊括的系统繁多,要想实现工程创优,必须先 ...

    • 盘点那些“看起来不咋的实际很有用”的养龟小妙招

      很多人对饲养方法有误解,总认为贵的就是好的.复杂的就是对的,看着玄乎的没搞清楚原理反正挺厉害的就直接开始模仿并使用,不讲究科学.原则,很容易出现各种各样的问题.原因很简单,不同的饲养方法对不同的情况都 ...