代码之家  ›  专栏  ›  技术社区  ›  Exelus

谷歌表格移动单元格

  •  1
  • Exelus  · 技术社区  · 7 年前

    我有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 回复  |  直到 7 年前
        1
  •  0
  •   Nicola Trenti    7 年前

    请尝试使用此功能:

    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++
     }
    }

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

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