会社員プログラマー「Kaia May」のコードの備忘録サイトです〜!

GASのスプレッドシートから重複を除いた実数を調べる方法

重複するデータがあるスプレッドシートのフィールドから、実数(重複を除いた数)を調べる方法。

性別
田中花子女性
鈴木太郎男性
田中花子女性
鈴木治郎男性
鈴木太郎男性
佐藤よしこ女性

上記のようなシートがあって、重複を除いた実数(この表だと4人)を調べるとする。

以下のコードの流れとしては、二次元配列にこの表のデータ(先頭行を除く)を入れて、姓+名+性別を結合した検索元データ(entryName)を作り、それと同じように結合した複数の検索先データ(checkName)を、それぞれ照らし合わせていき、重複している場合は、姓を空白にする。次からは姓が空白の場合はチェック済みなので飛ばす。

以上を繰り返しすることで1処理完了ごとに回数を1カウントしていき、重複を除いた実数が(tmpCounter)に入っていく。


//重複を除いた人数を計算する
var itemData= [[]];//リスト格納用配列の宣言
var StartRow = 2;//リストの開始行を宣言して代入
var dlastRow = sta1.getLastRow();//データの入っている最終行数の取得
itemData = sta1.getRange(StartRow,1,dlastRow-1,2).getValues()//配列itemDataにセル値を押し込む
var tmpCounter = 0; //アイテム発生数カウンタ変数宣言と代入
for (var i = 0; i<itemData.length ; i++){
if (itemData[i][0] == ""){continue}//カウント済のアイテムで空白が既にセットされていればスルー
for (var j = i+1 ;j<itemData.length; j++){
var entryName = itemData[i][0] + itemData[i][1] + itemData[i][2];
var checkName = itemData[j][0] + itemData[j][1] + itemData[j][2];
if (entryName == checkName){ //同じアイテムが後方に見つかったら
itemData[j][0]=""; //同じアイテムの2個目以降のデータを空白にする
}
}
tmpCounter += 1; //アイテム発生数カウンターに1加える

>bokucode

bokucode

遅ればせながらプログラミングを始めた静岡在住の30代の会社員プログラマー「Kaia May」です!
いろんな言語のコードに挑戦していきたいと思っていて、その中でメモしておきたいコードや今後も使えるコードやその説明などを記録していきます。
他にも参考になったおすすめサイトや書籍なども紹介していきます。

CTR IMG