Google Sheets 公式清理数据数组

问题描述 投票:0回答:1

我有与产品代码、产品名称和商品名称相关的数据,数据示例如下:

产品代码 产品名称 商品名称
01 A001 小学 -
小学
小学 水果
小学 -
01 A002 中学
中学 -
中学 布料
02 A003 中学 -
第二个 -
第二个 铅笔
02 A004 - -
- -

我想将其清理为预期的输出,如下所示: enter image description here

对于输出,我尝试了公式:

=let(Λ;tocol(;1); reduce(Λ;unique(tocol(C4:C18 ;1));lambda(a;c;ifna(vstack(if(iserr(+a);Λ;a);let(Σ;filter(D4:D18 ;scan(;C4:C18;lambda(f;q;if(q="";f;q)))=c;D4:D18<>"-";D4:D18<>"");if(isna(Σ);Λ;vstack(hstack(xlookup(c;C4:C18;A4:B18);c;Σ);))))))))

但是具有 2 个值的产品名称会输出最后一行。输出应该是第一行。有什么改进公式的建议吗?

这是测试表链接:https://docs.google.com/spreadsheets/d/1PoksiSGa9lEjhVPugiJhZd2vCw3R5SGZUw7-X2bNazY/edit?usp=sharing

google-sheets google-sheets-formula spreadsheet
1个回答
0
投票

您可以尝试:

=let(Σ;filter(A4:C18;A4:A18<>"";C4:C18<>"-"); Ξ;lambda(x;scan(;x;lambda(a;c;if(c="";a;c))));
     reduce(tocol(;1);sequence(rows(Σ));lambda(a;c;ifna(vstack(a;let(x;chooserows(Σ;c);d_;D4:D18;hstack(x;filter(d_;d_<>"-";d_<>"";Ξ(A4:A18)&Ξ(B4:B18)=join(;choosecols(x;1;2)))));)))))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.