Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google sheets唯一的多列并输出多列_Javascript_Google Sheets_Unique - Fatal编程技术网

Javascript Google sheets唯一的多列并输出多列

Javascript Google sheets唯一的多列并输出多列,javascript,google-sheets,unique,Javascript,Google Sheets,Unique,我需要一些帮助来解决这个问题。我有多个数据列,我希望这样做,以便我只保留唯一的值,并将项目返回到各自的列 1 2 3 6 1 1 4 7 2 3 5 8 结果会是这样的: 1 3 4 6 2 5 7 8 现在,我可以使用=unique()函数处理一列数据,但我希望能够将一列新数据放入新表中,它只会将其中的唯一项吐出到新表中 在脚本编辑器中粘贴这些脚本 函数onOpen(){ SpreadsheetApp.getUi().createMenu(“我的菜单”) .addIt

我需要一些帮助来解决这个问题。我有多个数据列,我希望这样做,以便我只保留唯一的值,并将项目返回到各自的列

1 2 3 6
1 1 4 7  
2 3 5 8
结果会是这样的:

1 3 4 6
2   5 7
      8
现在,我可以使用
=unique()
函数处理一列数据,但我希望能够将一列新数据放入新表中,它只会将其中的唯一项吐出到新表中

  • 在脚本编辑器中粘贴这些脚本
  • 函数onOpen(){ SpreadsheetApp.getUi().createMenu(“我的菜单”) .addItem('Show uniques'、'onlyShowUniques') .addToUi() } 函数onlyShowUniques(){ 变量r,d,u,t,row,i,j; r=SpreadsheetApp.getActive().getActiveRange(); d=转置(r.getValues()); u=[]; t=[]; 对于(变量i=0,rl=d.length;ib)| |-(a
  • 在脚本编辑器中粘贴这些脚本
  • 函数onOpen(){ SpreadsheetApp.getUi().createMenu(“我的菜单”) .addItem('Show uniques'、'onlyShowUniques') .addToUi() } 函数onlyShowUniques(){ 变量r,d,u,t,row,i,j; r=SpreadsheetApp.getActive().getActiveRange(); d=转置(r.getValues()); u=[]; t=[]; 对于(变量i=0,rl=d.length;ib)| |-(a}这是一种尝试,它使用数组公式:假设单元格不包含负数、逗号或管道符号

    =ArrayFormula(transpose(split(transpose(split(join(",",text(unique(transpose(split(textjoin(",",true,{transpose(A1:D3),-transpose(column(A1:D3))}),","))),"0;|")),"|")),",")))
    

    也适用于完整列引用

    =ArrayFormula(transpose(split(transpose(split(join(",",text(unique(transpose(split(textjoin(",",true,{transpose(A:D),-transpose(column(A:D))}),","))),"0;|")),"|")),",")))
    

    这是一个使用数组公式的尝试:假设单元格不包含负数、逗号或管道符号

    =ArrayFormula(transpose(split(transpose(split(join(",",text(unique(transpose(split(textjoin(",",true,{transpose(A1:D3),-transpose(column(A1:D3))}),","))),"0;|")),"|")),",")))
    

    也适用于完整列引用

    =ArrayFormula(transpose(split(transpose(split(join(",",text(unique(transpose(split(textjoin(",",true,{transpose(A:D),-transpose(column(A:D))}),","))),"0;|")),"|")),",")))
    
    var sheet=SpreadsheetApp.getActive().getSheetByName(“Sheet5”);
    var sheet2=SpreadsheetApp.getActive().getSheetByName(“Sheet6”);
    var info=sheet.getDataRange().getValues();
    var lastRow=sheet.getLastRow();
    var lastCol=sheet.getLastColumn();
    var seen={};//使对象充当哈希表
    变量数据=信息;//使数组与包含整个图纸的原始数组大小相同
    对于(var x=0;x
    前面的答案有50000个字符的连接限制,因此它有自己的限制。此选项有助于处理更大的数据集。我认为它还可以调整和改进

    var sheet=SpreadsheetApp.getActive().getSheetByName(“Sheet5”);
    var sheet2=SpreadsheetApp.getActive().getSheetByName(“Sheet6”);
    var info=sheet.getDataRange().getValues();
    var lastRow=sheet.getLastRow();
    var lastCol=sheet.getLastColumn();
    var seen={};//使对象充当哈希表
    变量数据=信息;//使数组与包含整个图纸的原始数组大小相同
    对于(var x=0;x

    前面的答案有50000个字符的连接限制,因此它有自己的限制。此选项有助于处理更大的数据集。我认为它还可以调整和改进

    这段整洁的代码。是的,您是对的,我的答案(以及其他基于拆分/联接模式的答案)将受到单个单元格中字符串最大长度的限制。通过查看您的答案,我了解到JavaScript中的数组是关联的(不一定实现为哈希表),因此与say Java不同,您可以使用任何数据类型作为数组的“下标”,而不仅仅是整数。这段代码非常简洁。是的,您是对的,我的答案(以及其他基于拆分/联接模式的答案)将受到单个单元格中字符串最大长度的限制。通过查看您的答案,我了解到JavaScript中的数组是关联的(不一定实现为哈希表),因此与say Java不同,您可以使用任何数据类型作为数组的“下标”,而不仅仅是整数。