需要从另一个单元格中的值合并Google表格中的单元格

时间:2019-05-15 21:01:02

标签: google-apps-script google-sheets merge cell

我有一个包含大量基本数据的电子表格。使用=filter(),将我要报告的内容拉出到第二个选项卡中。我将数据细分为每月1/4,以便b:e列为Jan,F:I为Feb,依此类推。 =filter正在提取3个报告,每个报告具有随机的行数。因此报告1可能是2-10行,报告2可能是11-18行,报告3可能是19-40行。每个报告的开头是一月,二月,三月的标题行。我想合并月份所在的标题行中的4列,以使月份标题跨越该月的四个季度。由于我们不知道这将是哪行,因此我猜想它需要是一个脚本,该脚本在A列中查找“标头”,然后仅将标头行合并B:E,F:I。

我最终将获得多个标签,这些标签具有不同的=filter()公式,但在同一列中具有相同的标题信息。

我正在考虑将脚本与mergeAcross()一起使用,但是无法弄清楚语法仅以Header为目标行并将其合并为4个月。

Sample of final result

1 个答案:

答案 0 :(得分:0)

这是一个可行的尝试。我添加了一些列,所以现在我的日期开始于  H列而不是D列

function mergingMonth(){

  var ss = SpreadsheetApp.getActive();
  var lastRow = ss.getLastRow();
  var range = ss.getRange("A1:A" + lastRow);
  var data = range.getValues();

  for (var r = 0; r < data.length; r++) {
    for (var c = 0; c < 1; c++)
      if (data[r][c] == "header") {
      var row = r+1
          ss.getRange("H"+row+":K"+row).mergeAcross();
          ss.getRange("L"+row+":O"+row).mergeAcross();
          ss.getRange("P"+row+":S"+row).mergeAcross();
          ss.getRange("T"+row+":W"+row).mergeAcross();
          ss.getRange("X"+row+":AA"+row).mergeAcross();
          ss.getRange("AB"+row+":AE"+row).mergeAcross();
          ss.getRange("AF"+row+":AI"+row).mergeAcross();
          ss.getRange("AJ"+row+":AM"+row).mergeAcross();
          ss.getRange("AN"+row+":AQ"+row).mergeAcross();
          ss.getRange("AR"+row+":AU"+row).mergeAcross();
          ss.getRange("AV"+row+":AY"+row).mergeAcross();
          ss.getRange("AZ"+row+":BC"+row).mergeAcross();
          ss.getRange("BD"+row+":BG"+row).mergeAcross();
          ss.getRange("BH"+row+":BK"+row).mergeAcross();
          ss.getRange("BL"+row+":BO"+row).mergeAcross();
      }
  }  
};