例文を使って繰り返し業務を時短

【GAS】シート間でマッチングして最終列に転記

【GAS】スプレットシートのシート間でマッチングして最終列に転記する方法 GAS

シート間でマッチングして最終列に転記する

アクティブなシートと右隣のシートのデータを比較し、マッチしたデータの右端の値をアクティブなシートの最終列に転記する

function writeToActiveSheet() {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = activeSpreadsheet.getActiveSheet();
  var activeData = activeSheet.getDataRange().getValues();
  
  var rightSheet = activeSpreadsheet.getActiveSheet().getNextSibling();
  var rightData = rightSheet.getDataRange().getValues();
  
  for (var i = 0; i < activeData.length; i++) {
    for (var j = 0; j < rightData.length; j++) {
      if (JSON.stringify(activeData[i]) === JSON.stringify(rightData[j])) {
        var dataToWrite = rightData[j][rightData[j].length - 1];
        activeSheet.getRange(i + 1, activeData[i].length + 1).setValue(dataToWrite);
        break;
      }
    }
  }
}

解説

  1. writeToActiveSheet() 関数: この関数は、アクティブなスプレッドシートからデータを取得し、アクティブなシートとその隣のシートのデータを比較して値を書き込みます。
  2. var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();: SpreadsheetApp.getActiveSpreadsheet() を使用してアクティブなスプレッドシートオブジェクトを取得し、activeSpreadsheet 変数に代入しています。
  3. var activeSheet = activeSpreadsheet.getActiveSheet();: activeSpreadsheet.getActiveSheet() を使用してアクティブなシートオブジェクトを取得し、activeSheet 変数に代入しています。
  4. var activeData = activeSheet.getDataRange().getValues();: activeSheet.getDataRange().getValues() を使用してアクティブなシートのデータ範囲の値を二次元配列として取得し、activeData 変数に代入しています。
  5. var rightSheet = activeSpreadsheet.getActiveSheet().getNextSibling();: activeSpreadsheet.getActiveSheet().getNextSibling() を使用してアクティブなシートの隣のシートオブジェクトを取得し、rightSheet 変数に代入しています。
  6. var rightData = rightSheet.getDataRange().getValues();: rightSheet.getDataRange().getValues() を使用して隣のシートのデータ範囲の値を二次元配列として取得し、rightData 変数に代入しています。
  7. for (var i = 0; i < activeData.length; i++) { ... }: アクティブなシートのデータを走査するためのループです。i の値は 0 から activeData の要素数未満まで増加します。
  8. for (var j = 0; j < rightData.length; j++) { ... }: 隣のシートのデータを走査するためのループです。j の値は 0 から rightData の要素数未満まで増加します。
  9. if (JSON.stringify(activeData[i]) === JSON.stringify(rightData[j])) { ... }: アクティブなシートと隣のシートのデータを文字列として比較して一致するかどうかを判断します。
  10. var dataToWrite = rightData[j][rightData[j].length - 1];: 一致する場合、rightData の最後の要素を dataToWrite 変数に代入します。
  11. activeSheet.getRange(i + 1, activeData[i].length + 1).setValue(dataToWrite);: 一致したデータをアクティブなシートの適切なセルに書き込みます。
  12. break;: if の条件が一致した場合、内側のループを終了します。

コメント

タイトルとURLをコピーしました