シートの列内で重複するデータを見つけるというのを
Google Apps Scriptでやろうと思いましたが
スプレッドシートの関数でできそうな気がしたので調べて試した2つの方法を書き残しておきます
- =COUNTIF(A:A,A:A)>1
- 重複したセルに色をつける(条件書式のカスタム数式)
- =IF(COUNTIF(A1:A,A1)>1,"重複","")
- 2つ目以降の重複したセルのB列に「重複」を入れる
1. =COUNTIF(A:A,A:A)>1
重複したセルに色をつける
条件書式のカスタム数式に関数を入れる方法
「表示形式」→「条件書式...」 を選択
「セルの書式設定の条件...」をクリック
「カスタム数式」を選択
「範囲に適用」の欄に適用したい範囲を選択
カスタム数式の欄に =COUNTIF(A:A,A:A)>1 を入力
「完了」をクリック
2つ目以降の重複したセルのB列に「重複」を入れる方法
条件書式を設定する手順
「表示形式」→「条件書式...」 を選択
「セルの書式設定の条件...」をクリック
「カスタム数式」を選択
「範囲に適用」の欄に適用したい範囲を選択
カスタム数式の欄に =COUNTIF(A:A,A:A)>1 を入力
「完了」をクリック
2. =IF(COUNTIF(A1:A,A1)>1,"重複","")
2つ目以降の重複したセルのB列に「重複」を入れる方法
B1に =IF(COUNTIF(A1:A,A1)>1,"重複","") を入れて適用したい範囲までドラッグする
B2以降は自動でセルを参照してくれる
=IF(COUNTIF(A2:A,A2)>1,"重複","")
これをスクリプトのsetValue()を使ってシートに入力したい場合
コード.gs
function check_duplication(){ var sh = SpreadsheetApp.getActiveSheet(); var last_row = sh.getLastRow(); for(var i = 1; i < last_row + 1; i++){ var range = sh.getRange("B"+ i); var formula = range.getFormula(); if(formula == ""){ range.setValue('=IF(COUNTIF(indirect("A"&row()&":A"),indirect("A"&row()))>1,"重複","")') }else{ break; } } } |
関連記事
シートの列内のデータを重複なく書き出す関数 =UNIQUE(A:A)