我正在使用Google表格创建一个包含两组数据的产品列表。我想知道是否有一个函数可以有效地创建一个列表,该列表是两个单独列表的乘积。
我可以通过多种方式实现此目的,例如创建一个数组,然后使用偏移量计算,该函数会向下复制输出列,但我希望找到一个解决方案,将两个列表作为数组并全部输出的组合。
我想这样做,因为列表长度是动态的。
我看过={list_1;list_2}
,但这只是将第二个列表放在第一个列表的下面,但是它作为单个单元格函数来完成。
我已经创建了一个电子表格,该电子表格说明了我正在努力实现的目标以及迄今为止已经实现的目标...
https://docs.google.com/spreadsheets/d/1Q3lexm06utmI1IE2HmjtNjBKHZc771KVNp1dDjL3jxs/edit?usp=sharing
答案 0 :(得分: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改编的。
答案 1 :(得分: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
答案 2 :(得分: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)))," ",""))
并使用以下命令对其进行排序:
=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))