基本函數(4)
數字與文本的轉換(Number與Text值的轉換)
Number.From、Number.FromText、Number.ToText、Number.IsOdd、Number.IsEven
-
Number.From
-
Number.FromText
-
Number.ToText
-
Number.IsOdd
-
Number.IsEven
Number.ToText
等價於format,某些情況可做正負零判斷代替IF
https://docs.microsoft.com/zh-cn/dax/format-function-dax
實例1:添加庫存狀態列
M code:
let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 更改的類型 = Table.TransformColumnTypes(源,{{"日期", type date}}), 已添加自定義 = Table.AddColumn(更改的類型, "庫", each Number.ToText([進出],"入庫;出庫;")) in 已添加自定義
實例2:工資條
M code:
let 源 = Excel.CurrentWorkbook(){[Name="表4"]}[Content], a = List.Select(Table.ToRecords(源),each _[姓名]<>null), b = Table.FromRecords(List.Transform(List.Select(List.Positions(a),each Number.IsEven(_)),each a{_})) in b
數字的取舍之道(Round系列函數)
Number.RoundUp、Number.RoundDown、Number.RoundTowardZero、Number.RoundAwayFromZero、Number.Round
- Number.RoundUp 向值大的方向入
- Number.RoundDown 向值小的方向舍
- Number.RoundTowardZero 靠近0入
- Number.RoundAwayFromZero 遠離0舍
- Number.Round 四舍五入
實例:制作標簽
M code:
let 源 = Excel.CurrentWorkbook(){[Name="表4"]}[Content], a = List.Transform(Table.ToRecords(源),each Table.Transpose(Table.DemoteHeaders(Table.FromRecords({_&[#""=null],[考號=null,姓名=null,#""=null]})))), b = List.Transform({0..Number.RoundDown(List.Count(a)/4)},each Table.Transpose(Table.Combine(List.Range(a,_*4,4)))), 自定義1 = Table.Combine(b) in 自定義1
絕對力量不多余
Number.Abs、Number.Power、Number.Mod、Number.IntegerDivide
- Number.Abs(數字)
- Number.Power(底數,指數
- Number.Mod(被除數,除數)
- Number.IntegerDivide(被除數,除數)
實例:單列轉多行多列
M code:
let 源 = Excel.CurrentWorkbook(){[Name="表6"]}[Content][姓名], a = List.Transform({0.. Number.IntegerDivide(List.Count(源)/4,1)},each List.Range(源,_*4,4)), b = Table.Transpose(Table.FromColumns(a)) in b
隨機不隨意
Number. Random、Number.RandomBetween
實例:隨機抽題系統制作
M code:
1 let 2 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content][選擇題], 3 a = List.Range(List.Sort({0..List.Count(源)/5-1},each Number.Random()),0,20), 4 b = List.Transform(a,each List.Range(源,_*5,5)), 5 自定義1 = Table.FromColumns({List.Combine(b)},{"選擇題"}), 6 已添加索引 = Table.AddIndexColumn(自定義1, "索引", 1, 1), 7 已添加自定義 = Table.AddColumn(已添加索引, "序號", each if Number.Mod(([索引]+4)/5,1)=0 then ([索引]+4)/5 else ""), 8 刪除的列 = Table.RemoveColumns(已添加自定義,{"索引"}), 9 重排序的列 = Table.ReorderColumns(刪除的列,{"序號", "選擇題"}) 10 in 11 重排序的列
注意:利用List.Sort({ }, each Number.Random)可以將原有序列隨機打亂順序
a = List.Range(List.Sort({0..List.Count(源)/5-1},each Number.Random()),0,20),
End