如图:A例为从微信中复制过来的信息,每条信息4行,要求根据B1:G1的标题要求,提取信息并放在对应的单元格中,公式如下:
=DROP(REDUCE("",SEQUENCE(9),LAMBDA(a,b,LET(
info_one,FILTER(SUBSTITUTE(A2:A37,":",":"),LOOKUP(ROW(A2:A37),ROW(A2:A37)/ISNUMBER(A2:A37),A2:A37)=b),
list,TEXTSPLIT(TEXTJOIN(",",1,IFERROR(TEXTAFTER(info_one,":"),"")),VSTACK("人",",")),
name,TEXTSPLIT(INDEX(list,,1),SEQUENCE(10)-1,,1),
num,TEXTSPLIT(INDEX(list,,1),name,,1),
concat,CONCAT(INDEX(list,,3)),
split_concat,TEXTSPLIT(concat,TEXTSPLIT(concat,VSTACK(":",SEQUENCE(10)-1),,1),,1),
time,CONCAT(IF(ISNUMBER(FIND(":",split_concat))*ISNUMBER(--split_concat),split_concat,"")),
VSTACK(a,HSTACK(name,num,INDEX(list,,2),INDEX(list,,3),time,INDEX(list,,4)))
))),1)
公式思路:先将每组客人的信息提取出来,再筛选,重构到一列,最后全部堆叠成表格。
整个函数的主题是reduce函数重构对应列,再堆叠。
重构列所需要的数据通过变量的形式进行逐个提取,虽然整体很多,但每个数据又不是很复杂。
评论 (0)