Google表格移动单元格

时间:2018-08-01 13:00:36

标签: google-apps-script google-sheets google-sheets-macros

我有按照一定顺序排列的9108行的google工作表,但是我努力将第二行紧挨着第一行,将第三行紧挨着移动(下图),我不能只接受所有的第9000行并将其拆分为3000列,我试图找到这样的脚本解决方案:

将其他所有行移至前一行
在“其他”行的下一行之后,将每一行都移动
删除空白行

并在不破坏订单的情况下处理工作表中的所有行

Picture with example

感谢任何人的帮助或寻找解决方案。

编辑:

这可以满足我的需要,但是它创建了列,并且有9108行,由于单元格过多,它在100行之后停止了。

function Test() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  var ss = spreadsheet.getActiveSheet()

  var index = 1
  var rowSpan = 1
  var columnSpan = 1

  while (index <= ss.getLastRow()) {
    ss.getRange(index, 1, 1, index + 1).moveTo(ss.getRange(rowSpan, columnSpan))
    columnSpan = columnSpan + 3

    if (columnSpan == 13) {
      columnSpan = 1
      rowSpan++
    }

    index++
  }
}

1 个答案:

答案 0 :(得分:0)

请尝试使用此功能:

function Test() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  var ss = spreadsheet.getActiveSheet()
  
  var index = 1
  var rowSpan = 1
  var columnSpan = 1
  var value
  
  while (index <= ss.getLastRow()) {
    
    value = ss.getRange(index, 1).getValue()
    
    ss.getRange(rowSpan, columnSpan).setValue(value)
    
    columnSpan++
      
    if (columnSpan == 4) {
      columnSpan = 1
      rowSpan++
    }
    
    index++
 }
}

您可以注册一个新的宏,然后在其中复制/粘贴此函数的内容。

之后,您可以清除不需要的额外数据。