Google工作表JOIN的文本结果超过了50000个字符的限制

时间:2017-02-26 23:12:24

标签: google-sheets spreadsheet

所以我试图结合A列的文字并将其与B列的每种可能性相匹配。我使用了公式

在C1栏中:

  =transpose(split(join("", arrayformula(rept(filter(A1:A, len(A1:A))&char(9999), counta(B1:B)))), char(9999)))  

在第D1栏:

  =transpose(split(rept(join(char(9999), filter(B1:B, len(B1:B)))&char(9999), counta(A1:A)), char(9999)))

但是当我在列表中使用它时,我分别得到C1和D1中的错误;

错误

  

JOIN的文本结果超过了50000个字符的限制。

     

REPT的文本结果超过32000个字符的限制

我用一个较小的正确列表测试了这个;

a b c 1 2 

并设法让我的列表在组合2个单元格后生成它

a 1
a 2
a 3
b 1
b 2
b 3

但是我合并的列表在每个列中都有更多的文本

有关如何组合我的列表的任何建议,如上所示,但在A列中有132种可能性,在b列中有52种可能性。每行每行包含70到150个字符的文本。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

转到菜单Tools → Script Editor...

粘贴此代码:

function crossJoin(arr1, arr2, delim) {

  delim = delim || '';

  var result = [];
  var row = [];
  for (var i = 0; i < arr1.length; i++) {
    for (var j = 0; j < arr2.length; j++) {
      row = [];
      row.push('' + arr1[0,i] + delim + arr2[0,j]);
      result.push(row);
    }   
  }
  return result;
}

保存项目。

在电子表格中将其用作常规功能:

=crossJoin(A1:A132,B1:B52)

Optionaly使用分隔符:

=crossJoin(A1:A132,B1:B52, "-")