基本函數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