从两个单独的列表创建组合列表

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

我正在使用Google表格创建一个包含两组数据的产品列表。我想知道是否有一个功能可以有效地创建一个列表,这是两个单独列表的产品。

我可以通过多种方式实现这一点,例如创建一个数组,然后使用偏移计算,我将输出列复制下来,但我希望找到一个解决方案,将两个列表作为数组并输出所有组合。

我想这样做,因为列表长度是动态的。

我看过={list_1;list_2},但这只是将第二个列表放在第一个列表下,但它将它作为单个单元格函数。

我已经创建了一个电子表格,说明了我正在努力实现的目标以及迄今为止我实现的目标......

https://docs.google.com/spreadsheets/d/1Q3lexm06utmI1IE2HmjtNjBKHZc771KVNp1dDjL3jxs/edit?usp=sharing

google-sheets
3个回答
0
投票

如果列表位于A和B列中,请将其放在C列中并向下复制,直到两个列表长度的乘积长度为止。

=CONCAT(INDEX(A:A,INT((ROW()-1)/COUNT(B:B))+1),INDEX(B:B,MOD(ROW()-1,COUNT(B:B))+1))

我想你可以抛出一些隐藏输出的逻辑,如果你走得太远然后只填充整个列。

这是改编自here


0
投票

我在stackoverflow.com上的其他地方找到了答案。

答案是:= ArrayFormula(transpose(split(rept(concatenate(A2:A&char(9)),counta(B2:B)),char(9)))&“”&transpose(split(concatenate(rept)(B2: B&char(9),counta(A2:A))),char(9))))

我在这里找到了

Generate all possible combinations for Columns in Google SpreadSheets


0
投票

将它包装成SUBSTITUTE以摆脱那个空间:

=ARRAYFORMULA(SUBSTITUTE(
 TRANSPOSE(SPLIT(REPT(CONCATENATE(A3:A&CHAR(9)),COUNTA(B3:B)),CHAR(9)))&" "&
 TRANSPOSE(SPLIT(CONCATENATE(REPT(B3:B&CHAR(9),COUNTA(A3:A))),CHAR(9)))," ",""))

0

并使用它来排序:

=ARRAYFORMULA(SORT(SUBSTITUTE(
 TRANSPOSE(SPLIT(REPT(CONCATENATE(A3:A&CHAR(9)),COUNTA(B3:B)),CHAR(9)))&" "&
 TRANSPOSE(SPLIT(CONCATENATE(REPT(B3:B&CHAR(9),COUNTA(A3:A))),CHAR(9)))," ",""),1,1))

0

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