![](/img/trans.png)
[英]Convert single cell text to multiple rows with information from next column
[英]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.