我有3个文本数组,来自3个不同的表。例如{a,B}、{w,x,y}和{@,#},我需要动态创建一个表,如下所示:| 列A|色谱柱B|列C|| --|--|--|| 一|W|在|| 一|W|数量|| 一|X|在|| 一|X|数量|| 一|y|在|| 一|y|数量|| B| W|在|| B| W|数量|| B| X|在|| B| X|数量|| B| y|在|| B| y|数量|尝试使用Map功能,但挣扎在我自己和MS网站上的文档没有帮助我太多。有什么想法吗?
k7fdbhmy1#
尝试沿着行的东西:
·单元格A1中使用的公式
=LET( _x, {"a","b"}, _y, {"w","x","y"}, _z, {"@","#"}, _w, TOCOL(_x&"|"&TOCOL(TOCOL(_y)&"|"&_z)), SORT(TEXTSPLIT(TEXTAFTER("|"&_w,"|",{1,2,3}),"|")))
还有一点:
·单元格E1中使用的公式
=TEXTSPLIT(ARRAYTOTEXT({"a ";"b "}&TOROW({"w ";"x ";"y "}&{"@","#"}))," ",", ")
50pmv0ei2#
在这种特殊的单字符情况下,您可以使用:用途:=MID(TOCOL({"a";"b"}&TOROW({"w";"x";"y"}&{"@","#"})),{1,2,3},1)在这种情况下不需要lambda;将水平阵列与垂直阵列相结合创建了2的所有组合。如果我们将它们展平以与下一个转置数组合并组合,则组合后的数组上也会发生相同的情况。因为它会为每个单元格创建一个包含3个字符的组合的1列溢出范围,所以我们可以使用MID(array,sequence(,3),1)或{1,2,3}来拆分字符。把它们洒到一个
=MID(TOCOL({"a";"b"}&TOROW({"w";"x";"y"}&{"@","#"})),{1,2,3},1)
MID(array,sequence(,3),1)
{1,2,3}
ia2d9nvy3#
RepeatCol
=LET(data1,B3:B5,data2,B7:C7,data3,B9:C11, RepeatCol,LAMBDA(data,repeats,IF(SEQUENCE(,repeats),data)), a,TOCOL(data1,1),b,TOCOL(data2,1),c,TOCOL(data3,1), ra,ROWS(a),rb,ROWS(b),rc,ROWS(c),rt,ra*rb*rc, HSTACK(TOCOL(RepeatCol(a,rt/ra)), TOCOL(RepeatCol(TOCOL(RepeatCol(b,rc)),ra),,1), TOCOL(RepeatCol(c,rt/rc),,1)))
3条答案
按热度按时间k7fdbhmy1#
尝试沿着行的东西:
·单元格A1中使用的公式
还有一点:
·单元格E1中使用的公式
50pmv0ei2#
在这种特殊的单字符情况下,您可以使用:用途:
=MID(TOCOL({"a";"b"}&TOROW({"w";"x";"y"}&{"@","#"})),{1,2,3},1)
在这种情况下不需要lambda;将水平阵列与垂直阵列相结合创建了2的所有组合。
如果我们将它们展平以与下一个转置数组合并组合,则组合后的数组上也会发生相同的情况。
因为它会为每个单元格创建一个包含3个字符的组合的1列溢出范围,所以我们可以使用
MID(array,sequence(,3),1)
或{1,2,3}
来拆分字符。把它们洒到一个ia2d9nvy3#
使用
RepeatCol
Lambda函数组合合并列