[M code] Tách chuỗi thông tin cá nhân
- AutoReport
- Jun 9, 2024
- 1 min read
Vừa rồi một bạn có hỏi Ad cách tách một chuỗi như hình và kết quả bên dưới:

Chuỗi bên trên có một đặc điểm chung là các thông tin cần tách đều bắt đầu bằng các thông tin: “SĐT:” , “mail”, “Tên”. Đây là cơ sở để ta dùng một số hàm trong M code để tách thông tin cần sử dụng.
Cách 1: Làm manual từng trường hợp
let
Source = Excel.CurrentWorkbook(){[Name="Stringtbl"]}[Content],
SliptbySpace = Table.AddColumn(Source, "SliptbySpace", each Splitter.SplitTextByDelimiter(",")([Items])),
SelectName = Table.AddColumn(SliptbySpace, "Name", each [
selectPhone = List.FindText([SliptbySpace],"Tên:"),
removeName = List.ReplaceValue(selectPhone,"Tên: ","",Replacer.ReplaceText),
combine = Text.Combine(removeName,", ")][combine]
),
SelectPhone = Table.AddColumn(SelectName, "Phone", each [
selectPhone = List.FindText([SliptbySpace],"SĐT"),
removeSDT = List.ReplaceValue(selectPhone," SĐT:","",Replacer.ReplaceText),
removeSpace = List.RemoveMatchingItems(removeSDT,{" "}),
combine = Text.Combine(removeSpace,",")][combine]
),
SelectMail = Table.AddColumn(SelectPhone, "Email", each [
selectMail = List.FindText([SliptbySpace],"mail:"),
removeMail = List.ReplaceValue(selectMail,"mail:","",Replacer.ReplaceText),
removeSpace = List.RemoveMatchingItems(removeMail,{" "}),
combine = Text.Combine(removeSpace,",")][combine]
),
selectCols = Table.SelectColumns(SelectMail,{"Name", "Phone", "Email"})
in
selectCols
Cách 2: Làm tự động dựa vào thông tin đưa vào (Bôi màu đỏ)
let
Source = Excel.CurrentWorkbook(){[Name="Stringtbl"]}[Content],
SliptbySpace = Table.AddColumn(Source, "SliptbySpace", each Splitter.SplitTextByDelimiter(",")([Items])),
Result = List.Accumulate(
{" SĐT:","mail:","Tên:"},
SliptbySpace,
(s,c)=> Table.AddColumn(s,c, each [
selectPhone = List.FindText([SliptbySpace],c),
removeLetter = List.ReplaceValue(selectPhone,c,"",Replacer.ReplaceText),
removeSpace = List.RemoveMatchingItems(removeLetter,{" "}),
combine = Text.Combine(removeSpace,",")][combine])
),
SelectCols = Table.SelectColumns(Result,{" SĐT:", "mail:", "Tên:"})
in
SelectCols
Comments