簡體   English   中英

如何在Google表格的列中的每第N行插入一個具有值的單元格

[英]How to insert a cell with value on every Nth row in a column in Google Sheets

列中有一個不同值的列表作為連續列表(數組)。
我們需要通過在它們之間插入一些文本將它們分組並在另一列中每隔 N 行(第 7 行)分隔。 不是一整排。 只是一個細胞 結果,它們將被“下推”列。

 +------+-----------+-----------+ | | Col2 | Col3 | +------+-----------+-----------+ | 1 | Sunday | Group 01 | | 2 | Monday | Sunday | | 3 | Tuesday | Monday | | 4 | Wednesday | Tuesday | | 5 | Thursday | Wednesday | | 6 | Friday | Thursday | | 7 | Saturday | Friday | | 8 | 10 | Saturday | | 9 | 20 | Group 02 | | 10 | 30 | 10 | | 11 | 40 | 20 | | 12 | 50 | 30 | | 13 | 60 | 40 | | 14 | 70 | 50 | | 15 | MERCURY | 60 | | 16 | MARS | 70 | | 17 | JUPITER | Group 03 | | 18 | VENUS | MERCURY | | 19 | SATURN | MARS | | 20 | EARTH | JUPITER | | 21 | NEPTUNE | VENUS | | 22 | Mary | SATURN | | 23 | John | EARTH | | 24 | Paul | NEPTUNE | | 25 | Ann | Group 04 | | 26 | ... | Mary | | 27 | ... | John | | 28 | | Paul | | 29 | | Ann | | 30 | | | | 31 | | | | 32 | | | | 33 | | | +------+-----------+-----------+ 

到目前為止,我已經嘗試並成功地通過使用一個簡單的查詢來獲得所需的結果:

=QUERY(({"***Group";B1:B7;"***Group";B8:B14;"***Group";B15:B21;"***Group";B22:B25;}),"SELECT *")

不過我想知道。 是否有更“優雅”以及使用公式或腳本通用方式

我建議您使用以下基於 Apps Script 的解決方案:

function myFunction() {
  var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var firstRow=1;
  var column=2;
  var destColumn=3;
  var increment=7;
  var lastRow=sheet.getLastRow();
  var values=sheet.getRange(firstRow, column, lastRow,1).getValues();
  var array=[];
  var k=1;
  Logger.log(lastRow);
  for(var i=0;i<lastRow;i++){
    if(i%increment==0){
      array.push("Group "+k);
      k++;
    }
     array.push(values[i][0]);
  }
  var outerArray = [];
  for(var j=0;j<array.length;j++){
    var tempArray = [];
    tempArray.push(array[j]);
    Logger.log(array[j]);
    Logger.log(tempArray);
    outerArray.push(tempArray);
  }
  sheet.getRange(1, destColumn, array.length, 1).setValues(outerArray);
}

工作流程:

  • 將感興趣列的內容推送到數組中
  • 每次increment插入一個帶有內容的附加條目
  • 將數組轉置為[column][row]語法
  • 將值插入目標列

參考:

您可以使用Array.splice每第 N 行插入 arrays :

 /** * Inserts string every nth row * * @customfunction * @param {Object[][]} arr Input Column * @param {number} every Nth row to insert * @param {string} str String to insert */ function insertText(arr, every, str) { for ( var i = 0, j = 0; i < arr.length - 1 && arr.splice(i++, 0, [str + ++j]); i += every ); return arr; } const arr = [ //Input col A1:A25 looks like this ['Sunday'], ['Monday'], ['Tuesday'], ['Wednesday'], ['Thursday'], ['Friday'], ['Saturday'], ['10'], ['20'], ['30'], ['40'], ['50'], ['60'], ['70'], ['MERCURY'], ['MARS'], ['JUPITER'], ['VENUS'], ['SATURN'], ['EARTH'], ['NEPTUNE'], ['Mary'], ['John'], ['Paul'], ['Ann'], ]; console.log(insertText(arr, 7, 'Group'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM