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)))
我在按值扩展一些数组时遇到了一些问题。最简单的解释方法是展示一些例子,所以:
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)))