如图A列为源数据,是一个字符串,内容是关于三个人的消费情况,如何通过公式提取出每个人的消费金额,及剩余金额。公式如下:
=LET(
split,DROP(TEXTSPLIT(A1,TEXTSPLIT(A1,VSTACK(SEQUENCE(10)-1,"元","块",".","aa","小红","小明","小兰"),,1),),,2),
fil,FILTER(split,ISERROR(--split)),
sub,REDUCE(fil,VSTACK("块","元"),LAMBDA(x,y,SUBSTITUTE(x,y,""))),
built_array,XLOOKUP(SEQUENCE(,COLUMNS(sub)),SEQUENCE(,COLUMNS(sub))/ISERROR(--sub),sub,,-1),
person_money,MAP(C2:E2,LAMBDA(x,SUM(--FILTER(sub,(built_array=x)*(IF(ISNUMBER(--sub),--sub,0)))))),
HSTACK(person_money,500-SUM(person_money)))
公式思路:此例首先涉及到的是数据清洗,通过split、fil、sub三个变量完成。涉及多个函数的使用,也基本将数据清洗的主要思路展现出来,大家不妨看一下:
split变量:保留数字、"元","块",".","aa","小红","小明","小兰"等信息。
fil变量:提取split变量的非数字数据。
sub变量:去除单位,变为数字形式。
评论 (0)