LANG SELRCT

コードを書く場所

2019年11月21日木曜日

複数行のセルの値を一つのセルに入れたい(スクリプト)



これを

こうしたい


A1 あいうえお
A2 かきくけこ
A3 さしすせそ
A4 空白行
A5 たちつてと
A6 なにぬねの
A7 空白行
A8 はひふへほ
A9 まみむめも
A10 空白行
A11 やゆよ
A12 らりるれろ
A13 空白行
A14 わをん

A1 あいうえお\nかきくけこ\nさしすせそ
A2 たちつてと\nなにぬねの
A3 はひふへほ\nまみむめも
A4 やゆよ\nらりるれろ
A5 わをん
   


きっともっとシンプルな方法があるはずですが、思い浮かんだ方法で書きました。



コード.gs
function mergeRows(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var activeRange = sheet.getActiveRange();
  var activeRow = activeRange.getRow();
  var activeCol = activeRange.getColumn();
  var lastRow = sheet.getLastRow();
  var targetRange = sheet.getRange(activeRow, activeCol, lastRow-activeRow+1, 1);
  var targetValues = targetRange.getValues();
  var sectionValues = '';
  var resultArrays = [];
  for(var i = 0; i < targetValues.length; i++) {
    if(targetValues[i][0] === "") {
      sectionValues += "\n"
    } else {
    sectionValues += targetValues[i][0] + "\n"
    }
  }
  targetRange.clear();
  var splitBreaks = sectionValues.split("\n\n");
  for(var i = 0; i < splitBreaks.length; i++) {
    resultArrays.push([splitBreaks[i]])
  }
  setValues(resultArrays)
}

function setValues(arrays){
  var sheet = SpreadsheetApp.getActiveSheet();
  var last_row = sheet.getLastRow();
  var start_row = last_row + 1;
  var start_col = 1;
  var num_rows = arrays.length;
  var num_cols = 1
  var range = sheet.getRange(start_row, start_col, num_rows, num_cols);
  range.setValues(arrays); 
}




最新の投稿

ArrayformulaはA1Notationの箇所を対象範囲に変えて使う

タイトルに思いを込めましたが、Arrayformulaを使う際の備忘録です。 公式のヘルプを見たけれどよくわからなかったので、手元で試した結果を書き残します。 ドキュメント エディタ ヘルプ ARRAYFORMULA 今回試したこと シートのA, B, C...