🐣
最終行まで順番に数字をつけるが、同じ数字がある場合は同じ番号を割り当てる方法
背景・概要
次のような列がある場合、この記事のタイトルの通り「最終行まで順番に数字をつけるが、同じ数字がある場合は同じ番号を割り当てる」ということを自動で行うというのが今回のGASです。
aaa
bbb
bbb
ccc
ddd
ddd
この場合は、同じ値がある場合でも、それらに対しては同じ番号が割り当てられます。
1 aaa
2 bbb
2 bbb
3 ccc
4 ddd
4 ddd
ということを行います。
GAS
function preparationCount() {
// シート「シート1」を取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("シート1");
// 最終行を取得
var lastRow = sheet.getLastRow();
if (lastRow < 2) {
// 1行以下の場合は処理を中断
return;
}
// A列に値を設定する
var bValues = sheet.getRange("B2:B" + lastRow).getValues();
var aValues = [];
aValues.push([1]); // A2に1を振る
var currentValue = bValues[0][0];
for (var i = 1; i < bValues.length; i++) {
if (bValues[i][0] === currentValue) {
aValues.push([aValues[i - 1][0]]);
} else {
currentValue = bValues[i][0];
aValues.push([aValues[i - 1][0] + 1]);
}
}
sheet.getRange("A2:A" + lastRow).setValues(aValues);
}
おわりに
今回は、とあるデータを突合する時の連番部分だけを抜き出したものです。
あまり使う機会はないと思いますが、備忘録として残しておきます。
Discussion