Excel/Google 工作表 - 复制数组并按不同数组的值扩展

Excel/Google sheets - duplicating array and extending by value from different array

我在按值扩展一些数组时遇到了一些问题。最简单的解释方法是展示一些例子,所以:

A       B       C
==================
A       11      A
B       22      B
C       33      C
                11
                A
                B
                C
                22
                A
                B
                C
                33

我当然可以像下面那样做:

=({A1:A3;B1;A1:A3;B2;A1:A3;B3})

但是一点都不灵活

主要问题是我想按值过滤一些 table:

A       B       filter key
==================
A       11      11
B       11      33
B       33      
B       33      
C       33
F       44
G       55

 

所以我想通过过滤键过滤所有 A 列,但我还想要结果总和。 所以在上面的例子中,用 11 过滤是 A,B 用 33 过滤是 B,C。 最后的结果应该是 ABBC

是的,可以这样做:

=({UNIQUE(FILTER(A1:A10;B1:B10=C1));UNIQUE(FILTER(A1:A10;B1:B10=C2))})

你有什么想法吗?

祝你星期天愉快!

更新:

如果有人会寻找解决方案:

=FILTER(INDEX(UNIQUE(A:B);;1);REGEXMATCH(INDEX(UNIQUE(A:B);;2)&""; TEXTJOIN("|"; 1; ""&C:C)))

分开的 A 列和 B 列(因此它可以是例如 A 列和 Z 列或来自 sheet_A 的 A 列,来自 sheet_B 的 B 列):

=FILTER(INDEX(UNIQUE(UNIQUE({A:A\B:B}));;1);REGEXMATCH(INDEX(UNIQUE({A:A\B:B});;2)&""; TEXTJOIN("|"; 1; ""&C:C)))
=INDEX(FLATTEN(SPLIT(JOIN("×", TEXTJOIN("×", 1, A2:A)&"×"&FILTER(B2:B, B2:B<>"")), "×")))

=FILTER(A2:A, REGEXMATCH(B2:B&"", TEXTJOIN("|", 1, C2:C&"")))

更新:

=FILTER(INDEX(UNIQUE(A:B);;1);
 REGEXMATCH(INDEX(UNIQUE(A:B);;2)&""; TEXTJOIN("|"; 1; ""&C:C)))