合并具有相同单词的单元格

时间:2018-03-10 18:44:40

标签: google-apps-script

我创建了一个包含多个行和列的数组。 在B栏中,我有蔬菜的类型,在c栏中,我有这些品种。 在数组中,有一个自动排序,在B列然后是c列进行。

是否可以自动合并包含相同类型的B列的单元格?

我只知道如何合并范围:

var range1 = sheet.getRange("b4:b9");
range1.merge();

A test array here

亲切。

1 个答案:

答案 0 :(得分:1)

这个示例脚本怎么样?我认为这种情况有几个答案,所以请将其视为其中之一。该脚本的流程如下。

流程:

  1. 检索B列的值。
  2. 检索重复值的数量。
  3. 合并细胞。
  4. 示例脚本:

    function myFunction() {
      var start = 4; // Start row number for values.
      var c = {};
      var k = "";
      var offset = 0;
      var ss = SpreadsheetApp.getActiveSheet();
    
      // Retrieve values of column B.
      var data = ss.getRange(start, 2, ss.getLastRow(), 1).getValues().filter(String);
    
      // Retrieve the number of duplication values.
      data.forEach(function(e){c[e[0]] = c[e[0]] ? c[e[0]] + 1 : 1;});
    
      // Merge cells.
      data.forEach(function(e){
        if (k != e[0]) {
          ss.getRange(start + offset, 2, c[e[0]], 1).merge();
          offset += c[e[0]];
        }
        k = e[0];
      });
    }
    

    结果:

    enter image description here

    注意:

    • 此示例脚本假定列B的值已排序。
    • 在您的共享电子表格中,它假设在B列合并单元格的值。
    • 在共享电子表格中,排序值的顺序为Composées, Cucurbitacées, Légumineuses, Liliacées, Solanacées。另一方面,“愿望”的顺序是Composées, Cucurbitacées, Légumineuses, Solanacées, Liliacées
      • 我无法理解Liliacées, SolanacéesSolanacées, Liliacées之间的差异逻辑。
      • 在此示例脚本中,它使用排序值的顺序。

    参考:

    如果我误解了你的问题,我很抱歉。

    编辑1:

    对于您的下一个问题,我认为以下流程可以达到您想要的效果。但我认为可能还有其他解决方案。

    1. 由用户添加值。
    2. 使用breakApart()中断合并的单元格。
      • 例如,它合并具有值"sample", "sample", "sample"的“A1:A3”的单元格。当使用breakApart()打破此合并单元格时,getValues()检索到的“A1:A3”的每个值都变为[["sample"],[""],[""]]
    3. 填写breakApart()
    4. 创建的空单元格
    5. 对单元格进行排序。
    6. 在我的答案上运行示例脚本。
    7. 参考:

      编辑2:

      breakApart()的用法:

      如果您想打破“B1:B”,请使用如下。

      var ss = SpreadsheetApp.getActiveSheet();
      ss.getRange("B1:B").breakApart()