基本函数2
Text.ToList和Text.Split
- Text.ToList从给定的文本值Text返回字符值列表
Text.ToList(Text) as list
示例:= Text.ToList("Hello World")
输出:{"H","e","l","l","o"," ","W","o","r","l","d"}
实例:拆分数字
= List.Transform(更改的类型[QQ号], each Text.Combine(Text.ToList(_), "-"))
Text.Split返回根据指定的分隔符Separator拆分文本Text而得到的文本值列表
示例:= Text.Split("Name|Address|PhoneNumber", "|")
输出:{"Name","Address","PhoneNumber"}
实例:统计人数
= List.Transform(源[名单], each List.Count(Text.Split (_,"、")))
实例3:分离数字
= List.Transform(源[代码], each Text.Combine(List.Select(Text.ToList(_), each _<="9"), ""))
Text. Length、Text. Start、Text. End、Text. Middle、Text. Range
Text. Length
- 返回字符串的长度
Text. Start与Text. End
- Text. Start(字符串,个数) 返回字符串的前几个字符(从左提取)
- Text. End(字符串,个数) 返回字符串的后几个字符(从右提取)
Text. Range与Text. Middle
- Text. Range(字符串,起始位置,长度)
- Text. Middle(字符串,起始位置,长度)
示例1:
= Text.Range("abdcdef", 8)
报错:超出范围
= Text.Middle("abdcdef", 8)
不报错:空
示例2:提取复姓
= Table.AddColumn(更改的类型, "自定义", each Text.Start([姓名], Number.From(List.PositionOf(复姓[复姓表], Text.Start([姓名], 2))<>-1)+1))
示例:成绩分级{90,80,60,0}
= Table.AddColumn(源, "自定义", (n)=>Text.Range("差中良优",List.Sum(List.Transform({90,80,60,0}, each Number.From(n[成绩]>=_)))-1,1))
示例:分隔
= Table.AddColumn(源, "自定义", (n)=>Text.Combine(List.Transform({0..Number.From(Text.Start(Text.From(Text.Length(n[账号])/4), 1))}, each Text.Middle(n[账号],_*4,4)), "-"))
Text与Number
字符与字符编码的转换
- Character.FromNumber 数字转字符
- Character.ToNumber 字符转数字
- 字符表达方式:#(4位或8位16进制编码)
- 10进制转16进制:Number.ToText(10进制数,”X”)
- 控制字符:tab(制表符-9) lf(换行符-10) cr(回车符-13)
- #(tab)
- #(tab,cr) #(000A,000D)
数字与文本值的转换
- Text.From 将值转为文本类型(数字,日期,时间)
- Number.From 将文本转为数字(数字,日期,时间,逻辑值)
Value.FromText
- 将文本格式的:数字,日期,时间,逻辑值等转为真正的格式
示例:
示例:
实例:
let 源 = Excel.CurrentWorkbook(){[Name="表43"]}[Content], a = 源[分数], b = List.Transform(a, each Text.Split(_, ",")), c = List.Transform(b, each List.Zip(List.Transform(_, each Text.Split(_, "-")))), 自定义1 = List.Transform(c, each Text.Combine(_{0}, "")&"#(lf)平均分:"&Number.ToText(List.Average(List.Transform(_{1}, each Value.FromText (_))),"f2")) in 自定义1
Text. Remove与Text.RemoveRange
Text. Remove
Text.Remove(文本,移除字符 as Any)
Text.RemoveRange
Text.RemoveRange(文本,移除起点位置,移除字符长度)
示例:
实例:
1 let 2 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 3 a = Table.AddColumn(源, "自定义", each Table.FromColumns(List.Transform({{"0".."9"}, {"一".."龥"}}, (n)=> List.Transform(Text.Split(Text.Remove([名单], n), "、"), each Value.FromText(_))),{"姓名","分数"})), 4 #"展开的“自定义”" = Table.ExpandTableColumn(a, "自定义", {"姓名", "分数"}, {"姓名", "分数"}), 5 删除的列 = Table.RemoveColumns(#"展开的“自定义”",{"名单"}) 6 in 7 删除的列
Text.PositionOf与Text.PositionOfAny
Text.PositionOf
Text.PositionOf(字符串,定位文本,0/1/2)
- 定位文本可以一单个字符,也可以是多个字符。
- 0:返回第1个
- 1:返回最后1个
- 2:返回全部
Text.PositionOfAny
Text.PositionOf(字符串,文本 as list,0/1/2)
- 定位文本必须是单个字符,也必须是列表,
- 0:返回第1个
- 1:返回最后1个
- 2:返回全部
实例:
提取最后一串字符
统计每个级别的次数
1 let 2 源 = Excel.CurrentWorkbook(){[Name="表53"]}[Content], 3 列表 = 源[编号], 4 a = List.Transform(列表, each Text.Middle(_, Text.PositionOf(_, "-", 1)+1, 99 )) 5 in 6 a
1 let 2 源 = Excel.CurrentWorkbook(){[Name="表52"]}[Content], 3 a = Table.AddColumn(源, "自定义", each Text.Combine(List.Transform({"优","良", "中", "差"}, (n)=> Number.ToText(List.Count(Text.PositionOf([级别], n, 2)), n&":" &"(0个)")), "#(lf)")) 4 in 5 a
Or
1 let 2 源 = Excel.CurrentWorkbook(){[Name="表52"]}[Content], 3 a = Table.AddColumn(源, "自定义", each Text.Combine(List.Transform({"优", "良", "中", "差"}, (x)=> Number.ToText(List.Count(List.Select(Text.ToList([级别]), each _=x)), x&":"&"(0个)")), "#(tab)")) 4 in 5 a
Text. Replace Text.ReplaceRange Text.Insert
Text. Replace
Text. Replace(字符串,要查找字符,替换成新字符)
Text.ReplaceRange
Text.ReplaceRange(字符串,起始位置,字符个数,替换的新值)
Text.Insert
Text.Insert(字符串,插入位置,新值)
实例:
let 源 = Excel.CurrentWorkbook(){[Name="表66"]}[Content], //a = Table.AddColumn(更改的类型, "自定义", each List.Transform(Text.Split([入围成员], "、"), (n)=> Text.Replace([成员], n, ""))) //这样是逐个遍历,达不到累计效果 a = Table.AddColumn(源, "自定义", each Text.Combine(List.Select(Text.Split(List.Accumulate(Text.Split([入围成员], "、"), [成员],(x,y)=> Text.Replace(x, y, "")), "、"), each _<>""), "")), 删除的列 = Table.RemoveColumns(a,{"组别", "成员", "入围成员"}) in 删除的列
1 let 2 源 = Excel.CurrentWorkbook(){[Name="表67"]}[Content], 3 已添加自定义 = Table.AddColumn(源, "自定义", each List.Accumulate({1..Text.Length([编号])/3-1}, " "&[编号], (x,y)=>Text.Insert(x, y*4,"-"))), 4 去除的文本 = Table.TransformColumns(已添加自定义,{{"自定义", Text.Trim, type text}}) 5 in 6 去除的文本
let 源 = Excel.CurrentWorkbook(){[Name="表68"]}[Content], 更改的类型 = Table.TransformColumnTypes(源,{{"品名", type text}}), 已添加自定义 = Table.AddColumn(更改的类型, "自定义", each Text.Insert([品名], List.Count(List.Select(Text.ToList([品名]), each _>"z")), "#(lf)")) in 已添加自定义
1