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