Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2018年2月27日火曜日

シートの列内の重複データを見つける関数


シートの列内で重複するデータを見つけるというのを
Google Apps Scriptでやろうと思いましたが
スプレッドシートの関数でできそうな気がしたので調べて試した2つの方法を書き残しておきます
  1. =COUNTIF(A:A,A:A)>1
    • 重複したセルに色をつける(条件書式のカスタム数式)
  2. =IF(COUNTIF(A1:A,A1)>1,"重複","")
    • 2つ目以降の重複したセルのB列に「重複」を入れる


1. =COUNTIF(A:A,A:A)>1


重複したセルに色をつける

条件書式のカスタム数式に関数を入れる方法

条件書式を設定する手順


「表示形式」→「条件書式...」 を選択


「セルの書式設定の条件...」をクリック


「カスタム数式」を選択


「範囲に適用」の欄に適用したい範囲を選択
カスタム数式の欄に =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)

Latest post

Googleドキュメントの指定した位置にテキストを追加したい(特定の見出しセクションにテキストを追加する)

指定したGoogleドキュメント内の 見出しBセクションにある標準テキストに 一行追加したくて書いたコードです。 ChatGPTとGeminiと何度かやり取りしながら、プロンプトを書くのに試行錯誤しました。 途中で手動修正も入れつつ、動くコードが書けました。 Apps Sc...