打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
第8节【表达式函数】Expression.Evaluate 【宏表函数】

一、Expression.Evaluate

1、解析

2、语法结构

  • Expression.Evaluate(“”)

  • 3、举例

  • (1)当成宏表函数使用

  • = Expression.Evaluate("7+30") 返回:37

  • = Expression.Evaluate("let a=7, b=30, c=a+b in c") 返回:37

  • (2)构建list

  • =Expression.Evaluate("{"&"1..4"&"}") 返回:{1,2,3,4}

  • = Expression.Evaluate("{"&"1,2,3,4"&"}") 返回:{1,2,3,4}

  • (3)嵌套函数使用【#shared 或者 [List.Sum = List.Sum]】有环境时不用加,只有在没有环境时才使用

  • 外面用了双引号,里面有2个双引号

  • = Expression.Evaluate("Text.ToList(""ABCD"")",#shared)

  • = Expression.Evaluate("Text.ToList(""ABCD"")",[Text.ToList=Text.ToList])

  • = Expression.Evaluate("List.Sum({1, 2, 3})", #shared)

  • = Expression.Evaluate("List.Sum({1, 2, 3})", [List.Sum = List.Sum])

  • (4)引用上一步且没有函数使用【[a = a]】

  • let

  • a = {1..10},

  • b = Expression.Evaluate("a{0}",[a=a])

  • in

  • b

  • 首先创建一个1到10的list,然后取出list中的第一个值

  • 这是因为该函数只对括号内的环境运算,a是另一个步骤和它没关系,所以它并不知道你这个a是什么鬼,你得指定一个record告诉它

  • (5)引用上一步,但是有函数时使用【#shared&[a = a]】

  • let

  • a = "ABCDEFG",

  • b = Expression.Evaluate("Text.ToList(a)",#shared&[a = a])

  • 或者 b= Expression.Evaluate("Text.ToList(a)",[Text.ToList=Text.ToList]&[a=a])

  • in

  • b


  • 二、【取分割符(前,之间,后)的值】

  • 1、Text.AfterDelimiter

  • (1)解析:

  • Text.AfterDelimiter取分割符之后的值

  • (2)语法结构

  • Text.AfterDelimiter(字符串,"分割符",{指定第几个分隔符,正/反顺序})

  • (3)举例

  • = Text.AfterDelimiter("111-222-333", "-") 返回:第1个(下标0开始)连字符后面的部分 “222-333”

  • = Text.AfterDelimiter("111-222-333", "-", 1) 返回:第2个连字符后面的部分 “333”

  • = Text.AfterDelimiter("111-222-333", "-", {1,RelativePosition.FromEnd}) 返回倒数第2个连字符后面的部分

  • = Text.AfterDelimiter("111-222-333", "-", {1,RelativePosition.FromStart}) 返回正数第2个连字符后面的部分


  • 2、Text.BeforeDelimiter:取分割符之前的值

  • 3、Text.BetweenDelimiters

  • (1)解析:

  • 取分割符之间的值

  • (2)语法结构

  • Text.BetweenDelimiters(字符串,"第一个分割","第二个分隔符",{第一个分隔符的位置,顺序},{第二个分隔符的位置,顺序})

  • 获取 "111 (222) 333 (444)" (第一个)左括号及其随后(第一个)右括号之间的部分。

  • Text.BetweenDelimiters("111 (222) 333 (444)", "(", ")") 返回:222

  • 获取 "111 (222) 333 (444)" 第二个左括号及其随后第一个右括号之间的部分。

  • Text.BetweenDelimiters("111 (222) 333 (444)", "(", ")", 1, 0) 返回:444

  • 举一反三:

  • 取第1个左括号及其随后第2个右括号之间的值

  • = Text.BetweenDelimiters("111 (222) 333 (444)", "(", ")", 0, 1) 返回:222) 333 (444

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
来个Power Query小题练练思路!
按分隔符拆分,这个方法真的太爽了!
先分解后合体!一个看上去超复杂的公式是怎么炼成的!
【开源原创】.NET开源表达式计算组件介绍与使用
用evaluate函数轻松计算文本算式
在Excel表中,运用TEXT函数提取日期和时间
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服