Table.ToList 根據條件删除字元串
本期案例是根據條件進行字元串删除,前後轉換效果如圖1。
删除的要求是:源資料中每一列有一個對應的代碼,當資料中包含數字的時候,代碼為空,最後獲得全部代碼以及0到9的數字即為該行各項需要移除的字元。
舉個例子:比如第一行,包含數字的有W2、W5、W6、W7,那麼剩下的W1、W3、W4對應的代碼是AaCcDd以及{0..9}的清單。那麼第一項“ABCDEFG”需要移除“ACD”,最終的結果為“BEFG”。
解題思路
1.擷取行資料與代碼一一對應的清單,篩選條件是資料項中是否包含數字,是的直接傳回空值,否則傳回對應的首項,這樣就獲得了對應的代碼清單(圖2)。
2.對獲得代碼項進行轉換,将其與{0..9}的清單作為移除函數的第二參數(圖3)。
3.最後轉換為表(圖4):
Table.FromRows(Table.ToList(源,each {_{0}}&List.Transform(List.Skip(_),(x)=>Text.Remove(x,Text.ToList(Text.Combine(List.Transform(List.Zip({List.Transform({"A".."G"},each _&Text.Lower(_)),List.Skip(_)}),each if Value.FromText(Text.Remove(_{1},{"A".."z"})) is number then "" else _{0})))&{"0".."9"}))),Table.ColumnNames(源))
以上是本期内容。
案例素材下載下傳:
連結:網頁連結
提取碼:2iiw