繁体   English   中英

如果下一列在电子表格中有内容,则将单行扩展为多行

[英]Expand single row into multiple rows if next column has content in a spreadsheet

我在 Google 电子表格中定义了一个树结构。 我需要修改以下结构:

+---+------------+-----------------+--------------------+-----+--------------+
|   |     A      |        B        |         C          |  D  |      E       |
+---+------------+-----------------+--------------------+-----+--------------+
| 1 | Techniques | Adduction d'eau | Conduites en fonte | Eau | Tuyaux       |
| 2 |            |                 |                    |     | Robinetterie |
| 3 |            |                 |                    |     | Outils       |
| 4 |            |                 |                    |     | Accessoires  |
| 5 |            |                 |                    | Gaz | Tuyaux       |
| 6 |            |                 |                    |     | Robinetterie |
| 7 |            |                 |                    |     | Outils       |
| 8 |            |                 |                    |     | Accessoires  |
+---+------------+-----------------+--------------------+-----+--------------+

进入这个:

+----+------------+-----------------+---------------------+-----+--------------+
|    |     A      |        B        |          C          |  D  |      E       |
+----+------------+-----------------+---------------------+-----+--------------+
|  1 | Techniques |                 |                     |     |              |
|  2 |            | Adduction d'eau |                     |     |              |
|  3 |            |                 | Conduites en fonte  |     |              |
|  4 |            |                 |                     | Eau |              |
|  5 |            |                 |                     |     | Tuyaux       |
|  6 |            |                 |                     |     | Robinetterie |
|  7 |            |                 |                     |     | Outils       |
|  8 |            |                 |                     |     | Accessoires  |
|  9 |            |                 |                     | Gaz |              |
| 10 |            |                 |                     |     | Tuyaux       |
| 11 |            |                 |                     |     | Robinetterie |
| 12 |            |                 |                     |     | Outils       |
| 13 |            |                 |                     |     | Accessoires  |
+----+------------+-----------------+---------------------+-----+--------------+

知道如何进行吗? 提前致谢

这是我的解决方案。 可能并不完美,但它可以完成工作。

var ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen() {
  var menu = [{name:"Split in rows", functionName:"splitInRows"}];
  ss.addMenu("Extras", menu);
}


function splitInRows() {

  // Get the current sheet, row, and column.
  var sheet = ss.getActiveSheet();
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();

  var range = sheet.getRange(1, 1, lastRow, lastColumn);
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns();

  for (var i = numRows; i > 0; i--) {    
    for (var j = numCols; j > 0; j--) {

      var cell = range.getCell(i,j);
      var cellValue = cell.getDisplayValue();

      if ( j > 1 && cellValue ) {

        // check if previous cell has content
        var previousCellValue = range.getCell(i,j-1).getDisplayValue();

        if (previousCellValue){

          // create empty row
          sheet.insertRowsAfter(i, 1);

          // move cell value into cell just below
          var currentCell = sheet.getRange(i, j);
          var belowCell = sheet.getRange(i+1, j);

          currentCell.copyTo(belowCell, {contentsOnly:true});
          currentCell.clearContent();

        }
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM