2015-03-13 136 views
0

希望将一列中的每个值添加到第二列中的每个值以创建复合数组。以为我可以使用ARRAYFORMULA来做这件事,但并不那么容易,看来。我想要的结果列自动展开等ARRAYFORMULA不会因为行数可以改变和Col 1和Col 2之间是不相等的:将一列中的每个值添加到Google表格中第二列中的每个值

Col 1 | Col 2 | Result 
------+-------+------- 
10 | 1 | 11 
------+-------+------- 
20 | 2 | 12 
------+-------+------- 
30 | 3 | 13 
------+-------+------- 
40 |  | 21 
------+-------+------- 
50 |  | 22 
------+-------+------- 
     |  | 23 
------+-------+------- 
     |  | 31 
------+-------+------- 
     |  | 32 
------+-------+------- 
     |  | 33 
------+-------+------- 
etc... 

我可以写创建此ONEDIT()时的指标值的变化的脚本,但宁愿一个公式。

谢谢!

+0

您每次编辑单元格时都会有效地想要一个新查询,并且要更新查询并填入新行。我认为这可以用公式完成,但有一个问题;您需要在第三列中包含足够的公式来涵盖所有可能的排列,这些排列会发生变化。所以你需要用公式填充更多的行,比你需要的还多,或者每次都用代码注入公式。但是如果你打算使用代码,使用公式是毫无意义的。 – 2015-03-13 15:48:30

+0

我不想使用代码,而宁愿使用Google ARRAYFORMULA或一些派生项,这些派生项允许我使用自动扩展结果列的单个公式。代码太永久。公式允许更简单的更改。 – user875479 2015-03-13 16:00:33

回答

0

最后,经过一段时间,我弄明白了。也许这会帮助别人,或者刺激别人去比这更优雅的回答。在Google表格中,将此公式放入顶部单元格(示例表格中的C2),其余值将自动展开并正确添加:

= ARRAYFORMULA(ARRAYFORMULA(TRANSPOSE(SPLIT(REPT(JOIN(“ ,“$ A1:$ A10),COUNT($ B1:$ B10)),”,“)))+ ARRAYFORMULA(TRANSPOSE(ARRAYFORMULA(SPLIT(JOIN(”,“,(REPT(”,“,& $ B1 :$ B10,COUNT($ A1:$ A10)))),“,”)))))

这假定每列最多可以有9行。显然,可以根据您为每列指定的范围调整行数。这取得每列中的值,将它们组合成一个重复的数组,然后连接/分割或连接,然后重复并分割......以创建正确的组合。一种自动扩展的公式,无需编写脚本即可灵活使用。如果有的话,请分享一个更好的方式来做到这一点。

相关问题