查找匹配函数 FIND 和 SEARCH 的基本用法

一、Excel中FIND函数和SEARCH函数的用法

FIND函数区分大小写,不支持通配符
SEARCH 函数不区分大小写,支持通配符

有这样一个产品:
file

注:文本 “KitchenAId 和 Stockwell”内有空格

现在我们看这两个函数的用法:

1.FIND(find_text,within_text, [start_num])
file

注意:FIND 始终返回从 within_text 的起始位置计算的字符编号,如果 start_num 大于 1,则会对跳过的字符计数。

示例:

(1) FIND("k",A2)
该公式 从单元格 A2开始查找第一个“k”的位置,返回18

(2) FIND("en?",A2)
该公式 从单元格查找前两个字符为“en”,由三个字符组成的字符串,第一次出现的位置,返回错误 #VALUE!

2.SEARCH(find_text,within_text,[start_num])
file

示例:

(1) SEARCH("k",A2)
该公式 从单元格 A2开始查找第一个“k”的位置,返回1

(2) SEARCH("en?",A2)
该公式 从单元格查找前两个字符为“en”,由三个字符组成的字符串,第一次出现的位置,返回 6

二、PowerBI中FIND函数和SEARCH函数的用法

在PowerQuery和PBIDesktop里有相同行为的函数,小编这里分别演示:

1、 PowerQuery中M语言的Text类函数

Text类函数可以分为判断、选择、操作、查看等几个类型的函数,这里介绍一个字符串判断类函数Text.Contains

Text.Contains(textas nullable text, substring as text, optional comparer asnullable function) as nullable logical

语义:判断文本 text 是否包含文本 substring。返回布尔值。
file

示例:

我们将上面的产品名称复制到PowerQuery中,通过“添加列”选项卡下的“自定义列”功能,新建两个新列,分别为“自定义1”列和“自定义2”列,查看编辑器返回的结果:

file

可以看到:

Text.Contains([产品名称],"s")返回的结果是FALSE
Text.Contains([产品名称],"S")返回的结果是TRUE

2、PowerBIDesktop中DAX函数的查找匹配函数

DAX函数中查找匹配类函数有FIND、SEARCH、LOOKVALUE、CONTAINS、TREATAS、IN等。

今天介绍两个简单函数FINDSEARCH,PowerBI中这两个函数的行为和EXCEL中的行为一致。在语法上,比EXCEL中多一个第四参数,这个参数一般不可省略。

(1) FIND函数

EN语法:
FIND( FindText, WithinText, [StartPosition], [NotFoundValue] )

CN语法:
FIND( 要查找的文本[FL1] ,包含“要查找的文本”的文本[FL2] ,[指定在WithinText中开始搜索的位置],[指定找不到文本时返回的数值[FL3] ] )

语义:返回一个文本字符串(FindText)在另一个文本字符串(WithinText)内的起始位置。FIND区分大小写。

返回:要查找的文本字符串起点的数字。

(2) SEARCH函数

EN语法
SEARCH( FindText[FL4] , WithinText,[StartPosition], [NotFoundValue] )

CN语法
SEARCH( 要查找的文本,包含要查找文本的文本,[开始查找位置],[找不到文本时返回的数值] )

语义:返回一个文本字符串(FindText)在另一个文本字符串(WithinText)内的起始位置。SEARCH不区分大小写。

示例:

我们把产品名称放在PBI中,新建两个精确匹配的度量值:

"k"的位置_FIND =FIND("k","KitchenAId 和Stockwell",,0)

"k"的位置_SEARCH =SEARCH("K","KitchenAId 和Stockwell",,0)

在报表窗口,我们可以看到,和EXCEL中返回的结果一致。

file

同时我们新建两个模糊匹配的度量值:

"k"的位置_FIND_模糊匹配 = FIND("en?","KitchenAId 和Stockwell",,0)

"k"的位置_SEARCH_模糊匹配 = SEARCH("en?","KitchenAId 和Stockwell",,0)

可以看到,和EXECL里的结果一样。因为我们这里指定了第四参数,所以FIND的返回结果为0。

file

三、小编想说

无论是在EXCEL和PBI中,还是在PowerQuery和PowerBIDesktop中,会有很多相同行为的函数。EXCEL里支持的通配符和PBI中SEARCH函数所支持的通配符相同:

问号“?”,代表任意一个字符
星号“*”,代表任意多个字符

注意一定要在英文状态下输入哦!

本期内容就是这些,小伙伴们下期再见!

  • PowerPivot工坊原创文章,转载请注明出处!

    如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊