[M code] Tách mẫu số lượng không trong điều kiện không đồng nhất đơn vị tính
- AutoReport
- Jun 16, 2024
- 1 min read
Một câu hỏi trên diễn đàn GPE của một bạn như hình bên dưới

Giải bằng Excel khá đơn giản với hàm như sau:
=LOOKUP(10^6,--RIGHT(SUBSTITUTE(TRIM(LEFT(D7,SEARCH({"gsm","g/m"},D7)-1))," ",REPT(" ",20)),20))
Nếu giải bằng Power Query thì như sau:
let
Source = Excel.CurrentWorkbook(){[Name="GetNumbertbl"]}[Content],
LowercasedText = Table.TransformColumns(Source,{{"Items", Text.Lower, type text}}),
Lookup = Table.AddColumn(LowercasedText,"Lookup",
(x)=>
List.Transform(StringFind,each Text.PositionOf(x[Items],_,Occurrence.All))
),
ExpandedLookup = Table.ExpandListColumn(Table.ExpandListColumn(Lookup, "Lookup"),"Lookup"),
removeNull = Table.SelectRows(ExpandedLookup, each ([Lookup] <> null)),
getPosition = Table.AddColumn(removeNull, "Result", each
let
getText = Text.Start([Items],[Lookup]),
trimText = Text.Trim(getText),
insrBlank = Text.Replace(trimText," "," "),
getNumber = Text.End(insrBlank,10)
in getNumber
),
ChangedType = Table.TransformColumnTypes(getPosition,{{"Result", type number}}),
RemovedColumns = Table.RemoveColumns(ChangedType,{"Lookup"})
in
RemovedColumns
Stringfind là list cần tìm: "gsm", "g/m2"
Comments