基本函數(4)——Power Query M語言


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM