Googleスプレッドシートの同じ列で値が重複している場合にセルを強調表示するにはどうすればよいですか?


271

同じ列で値が重複している場合、Googleスプレッドシートのハイライトセルの数式を探してい ます

誰でもこのクエリを助けてくれますか?

回答:


474

これを試して:

  1. 列全体を選択します
  2. フォーマットをクリック
  3. [ 条件付き書式]をクリックします
  4. [ 別のルールを追加]をクリックします(または既存/デフォルトのルールを編集します)
  5. 次の場合セルのフォーマットを設定しますCustom formula is
  6. 値を次のように設定します=countif(A:A,A1)>1(またはA選択した列に変更します)。
  7. 書式設定スタイルを設定します。
  8. 範囲が列に適用されることを確認します(例:)A1:A100
  9. 完了をクリック

A1:A100セルに書き込まれたものはすべてチェックされ、重複がある場合(複数回発生する場合)は色付けされます。

,小数点記号としてコンマ()を使用するロケールの場合、引数の区切り文字はおそらくセミコロン(;)です。つまり=countif(A:A;A1)>1、代わりにを試してください。

複数の列の場合は、を使用しますcountifs


50
新しいGoogleスプレッドシートでは、複数列バージョンのCOUNTIFSを使用できます。重複がより多くの列の組み合わせである場合は、このように使用します=COUNTIFS(A:A; A1; B:B; B1)>1
Christiaan Westerbeek

6
終了;すると、「無効な数式」エラーが発生します。それを削除するだけでうまくいきました。また、注意してcountifください。2番目の引数として指定するセルは、選択する範囲の最初のセルでなければなりません。
edelans

11
できます。しかし、なぜ?A1が方程式の基準であると仮定すると、この式は範囲内のすべてのセルをA1と比較しませんか?
mafonya

9
@mafonya、カスタム数式は、最初のセルに適用されるものとして読み取る必要がある一般的な数式です。すべての参照は、選択した範囲内のすべてのセルに適用されます。たとえば、セルB2をチェックすると、数式は内部的になり=countif(B:B,B2)>1ます。これにより、絶対セル参照と相対セル参照を使用するときに、かなり高度なフォーマットを実行できます。
asoundmove 2015年

14
補足として、列全体に適用したい場合は、数式= countif(A:A、A:A)> 1を使用できます。これは、セルA1だけに適用されるのではなく、 A4とA8が同じ場合(重複)。これで、A4とA8の両方がフォーマットされます。
BBking

68

一方でzolleyの答えは質問に完全に右である、ここではより一般的な任意の範囲のためのソリューションに加え、説明があります:

    =COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1

この例では範囲を使用することに注意してくださいA1:C50。最初のパラメーター($A$1:$C$50)は、重複を強調表示する範囲に置き換えてください!


重複を強調表示するには:

  1. 重複するマーキングが必要な範囲全体を選択します。
  2. メニュー:Format>Conditional formatting...
  3. Apply to range、ルールを適用する範囲を選択します。
  4. ではFormat cells if、選択Custom formula isドロップダウンに。
  5. テキストボックスに所定の数式を挿入し、ステップ(3)に一致するように範囲を調整します。

なぜ機能するのですか?

COUNTIF(range, criterion)、内のすべてのセルと比較しますrangecriterion式と同様に処理され、。特別な演算子が指定されていない場合は、範囲内のすべてのセルを指定されたセルと比較し、ルール(この場合は比較)に一致することが判明したセルの数を返します。固定範囲($符号付き)を使用しているため、常に全範囲が表示されます。

2番目のブロックはINDIRECT(ADDRESS(ROW(), COLUMN(), 4))、現在のセルのコンテンツを返します。これがセル内に配置された場合、ドキュメントは循環依存関係を叫びますが、この場合、数式は変更されずにセル内にあるかのように評価されます。

ROW()そしてCOLUMN()行戻ります番号および列番号をそれぞれ指定されたセルのを。パラメータを指定しない場合、現在のセルが返されます(これは1から始まります。たとえば、の場合B3は3をROW()、の場合は2を返しCOLUMN()ます)。

次に、次を使用します:ADDRESS(row, column, [absolute_relative_mode])数値の行と列をセル参照に変換します(B3セルのコンテキスト内にいる間は、アドレスまたはコンテンツがわからないので、比較するためにコンテンツが必要です)。3番目のパラメーターは、フォーマットを処理し、好きな4フォーマットを返しますINDIRECT()

INDIRECT()、セル参照を取得し、その内容を返します。この場合、現在のセルのコンテンツ。次に、最初にCOUNTIF()戻り、範囲内のすべてのセルをテストして、カウントを返します。

最後のステップは、論理式にすることで、ブール式を返すようにすることですCOUNTIF(...) > 1。これ> 1は、同じセルが少なくとも1つあることがわかっているために使用されます。それが範囲内にある私たちのセルであり、したがって、それ自体と比較されます。したがって、重複を示すために、2つ以上のセルに一致するセルを見つける必要があります。


出典:


4
残念ながら、これは私にはうまくいきません。重複がたくさんあるにもかかわらず、何も強調していません。なぜだかわかりませんが、いい解決策のように聞こえます。
JVC

これは私にとってはうまくいきますが、空白のセルも強調表示されます。空白を除外する方法はありますか?
ギレスピーザ2017年

1
@Amanda-ええ、少しの創造性とそれが可能です。私は1週間はAFKですが、1週間で私を捕まえます。喜んでお手伝いします。アイデアは、(を使用して*)ANDステートメントと別のチェックを作成することです((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...)))))。それが私がモバイルでできる最高のことです。:)
2017年

2
まさにこれが必要な解決策です。これは、重複を識別するためのHASHMAPのように機能します。
AKh 2018年

1
魅力的な作品、@ Selfishに感謝!時間を節約できました。注:変更する必要があるの$A$1:$C$50は、問題の列に応じて-でなければなりません。私はzolleyよりもこのより一般的なアプローチが好きです。
boldnik

28

@zolleyの答えは正しいです。参照用のGifと手順を追加するだけです。

  1. メニューに移動 Format > Conditional formatting..
  2. 探す Format cells if..
  3. =countif(A:A,A1)>1フィールドに追加Custom formula is
    • 注:A独自の列で文字を変更してください。

ここに画像の説明を入力してください


2
重複を強調表示した後、色でフィルタリングするにはどうすればよいですか?
Faisal

@ファイサルはスクリプトまたはアドオンのみ
player0

27

「テキストを含む」ドロップダウンメニューから「カスタム式は:」を選択し、「= countif(A:A、A1)> 1」(引用符なし)と書き込みます。

私はzolleyが提案したとおりに行いましたが、小さな修正を行う必要があります「Text Contains」の代わりにCustom formula is」を使用してください。そして、条件付きレンダリングが機能します。

メニューのスクリーンショット


1
私はあなたに反対票を投じなかった(私は今日この質問を見つけた)が、あなたが要求したように、ここにあなたの答えに対するコメントがある。セミコロンは式では必要ないと思います。また、Googleシートの条件付き書式パネルにドロップダウンが表示されます。少なくとも、選択オプションをクリックすると、通常はドロップダウンメニューと呼ばれる長いオプションセットが表示されます。ドロップダウンに最初に表示されるオプションは頻繁にText Containsであるため、ユーザーは通常、これをクリックしてドロップダウンメニューにアクセスします。
Paul de Barros、2016

ポール、コメントありがとう。多分私は誤解しました:「テキストが含まれている」(または「セルの書式設定...」)には子のドロップダウンメニュー「カスタム数式は:」があることを理解しました。さらに、「テキストが含まれる」には、「= countif(A:A、A1)> 1;」ではなく、対応するサブストリング値が必要です。実際、これは別のアプローチです。
シュリック

12

重複を強調表示する(列C):

=COUNTIF(C:C, C1) > 1

説明:C1ここではCの最初の行を参照していません。この数式は条件付きフォーマットルールによって評価されるため、代わりに、数式が適用されるかどうかを確認するときに、C1現在評価されている行を効果的に参照しますハイライトを適用する必要があるかどうかを確認します。(つまり、それINDIRECT(C &ROW())があなたにとって何かを意味する場合、それはに似ています!)基本的に、条件付き書式の式を評価する場合、行1を参照するものはすべて、式が実行されている行に対して評価されます。(そして、はい、C2を使用する場合、現在評価されている行のすぐ下の行のステータスを確認するようにルールに要求します。

つまり、これは、C1列全体にある(評価中の現在のセル)にあるものの数え上げを数えC、それらが複数ある場合(つまり、値が重複している場合)、ハイライトを適用します(式全体として、に評価されますTRUE)。

最初の重複のみを強調表示します。

=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)

説明:これは、両方がの場合にのみ強調表示されCOUNTIFますTRUE(それらは内に表示されますAND())。

評価される最初の項(COUNTIF(C:C, C1) > 1)は、最初の例とまったく同じです。それはだTRUEにあるものは何でもする場合にのみC1、重複しています。(強調表示する必要があるかどうかを確認するためにチェックされている現在の行C1効果的に参照していることに注意してください

2番目の用語(COUNTIF(C$1:C1, C1) = 1)は似ていますが、3つの重要な違いがあります。

C(最初の列のように)列全体を検索するのではなくC:C、最初の行から検索を開始しますC$1 (評価される行ではなく、$文字列を強制的に行に表示1させます)。

そして、評価されている現在の行で検索を停止しますC1

最後にそれは言う= 1

そのため、TRUE現在評価されている行の上に重複がない場合のみです(つまり、重複の最初でなければなりません)。

その最初の用語(TRUEこの行に重複がある場合のみ)と組み合わせると、最初の出現のみが強調表示されます。

2番目以降の重複を強調表示します。

=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)

説明:最初の式は常に同じです(TRUE現在評価されている行がまったく重複している場合)。

2番目の用語は、否定されていることを除いて、前の用語とまったく同じNOT()です。したがって、最初の発生は無視されます。

最後に、3番目の用語が重複2、3などをCOUNTIF(C1:C, C1) >= 1取得し、現在評価されている行(C1内のC1:C)から検索範囲を開始します。次に、これTRUEより下に1つ以上の重複がある(そしてこれを含む)場合にのみ(ハイライトを適用)と評価されます>= 1(それ以外の場合は、最後の重複は無視され>=ません>)。


3

私はすべてのオプションを試しましたが、どれもうまくいきませんでした。

助けてくれたのはgoogle appスクリプトだけでした。

ソース:https : //ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets

ドキュメントの上部

1.- ツールに移動>スクリプトエディター

2.-スクリプトの名前を設定します

3.-このコードを貼り付けます:

function findDuplicates() {
  // List the columns you want to check by number (A = 1)
  var CHECK_COLUMNS = [1];

  // Get the active sheet and info about it
  var sourceSheet = SpreadsheetApp.getActiveSheet();
  var numRows = sourceSheet.getLastRow();
  var numCols = sourceSheet.getLastColumn();

  // Create the temporary working sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var newSheet = ss.insertSheet("FindDupes");

  // Copy the desired rows to the FindDupes sheet
  for (var i = 0; i < CHECK_COLUMNS.length; i++) {
    var sourceRange = sourceSheet.getRange(1,CHECK_COLUMNS[i],numRows);
    var nextCol = newSheet.getLastColumn() + 1;
    sourceRange.copyTo(newSheet.getRange(1,nextCol,numRows));
  }

  // Find duplicates in the FindDupes sheet and color them in the main sheet
  var dupes = false;
  var data = newSheet.getDataRange().getValues();
  for (i = 1; i < data.length - 1; i++) {
    for (j = i+1; j < data.length; j++) {
      if  (data[i].join() == data[j].join()) {
        dupes = true;
        sourceSheet.getRange(i+1,1,1,numCols).setBackground("red");
        sourceSheet.getRange(j+1,1,1,numCols).setBackground("red");
      }
    }
  }

  // Remove the FindDupes temporary sheet
  ss.deleteSheet(newSheet);

  // Alert the user with the results
  if (dupes) {
    Browser.msgBox("Possible duplicate(s) found and colored red.");
  } else {
    Browser.msgBox("No duplicates found.");
  }
};

4.-保存して実行

3秒未満で、重複した行が色付けされました。スクリプトをコピーして貼り付けます。

Googleアプリスクリプトについて知らない場合は、次のリンクが役立ちます。

https://zapier.com/learn/google-sheets/google-apps-script-tutorial/

https://developers.google.com/apps-script/overview

これがお役に立てば幸いです。


このコードを変更して、列の重複フィールドのみを行全体ではなく赤で強調表示できますか?
Amr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.