同じ列で値が重複している場合、Googleスプレッドシートのハイライトセルの数式を探してい ます
誰でもこのクエリを助けてくれますか?
同じ列で値が重複している場合、Googleスプレッドシートのハイライトセルの数式を探してい ます
誰でもこのクエリを助けてくれますか?
回答:
これを試して:
Custom formula is
=countif(A:A,A1)>1
(またはA
選択した列に変更します)。A1:A100
。A1:A100セルに書き込まれたものはすべてチェックされ、重複がある場合(複数回発生する場合)は色付けされます。
,
小数点記号としてコンマ()を使用するロケールの場合、引数の区切り文字はおそらくセミコロン(;
)です。つまり=countif(A:A;A1)>1
、代わりにを試してください。
複数の列の場合は、を使用しますcountifs
。
;
すると、「無効な数式」エラーが発生します。それを削除するだけでうまくいきました。また、注意してcountif
ください。2番目の引数として指定するセルは、選択する範囲の最初のセルでなければなりません。
=countif(B:B,B2)>1
ます。これにより、絶対セル参照と相対セル参照を使用するときに、かなり高度なフォーマットを実行できます。
一方でzolleyの答えは質問に完全に右である、ここではより一般的な任意の範囲のためのソリューションに加え、説明があります:
=COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1
この例では範囲を使用することに注意してくださいA1:C50
。最初のパラメーター($A$1:$C$50
)は、重複を強調表示する範囲に置き換えてください!
重複を強調表示するには:
Format
>Conditional formatting...
Apply to range
、ルールを適用する範囲を選択します。Format cells if
、選択Custom formula is
ドロップダウンに。なぜ機能するのですか?
COUNTIF(range, criterion)
、内のすべてのセルと比較しますrange
とcriterion
式と同様に処理され、。特別な演算子が指定されていない場合は、範囲内のすべてのセルを指定されたセルと比較し、ルール(この場合は比較)に一致することが判明したセルの数を返します。固定範囲($
符号付き)を使用しているため、常に全範囲が表示されます。
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つ以上のセルに一致するセルを見つける必要があります。
出典:
*
)ANDステートメントと別のチェックを作成することです((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...)))))
。それが私がモバイルでできる最高のことです。:)
$A$1:$C$50
は、問題の列に応じて-でなければなりません。私はzolleyよりもこのより一般的なアプローチが好きです。
「テキストを含む」ドロップダウンメニューから「カスタム式は:」を選択し、「= countif(A:A、A1)> 1」(引用符なし)と書き込みます。
私はzolleyが提案したとおりに行いましたが、小さな修正を行う必要があります。「Text Contains」の代わりに「Custom formula is」を使用してください。そして、条件付きレンダリングが機能します。
Text Contains
であるため、ユーザーは通常、これをクリックしてドロップダウンメニューにアクセスします。
=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
この行に重複がある場合のみ)と組み合わせると、最初の出現のみが強調表示されます。
=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
(それ以外の場合は、最後の重複は無視され>=
ません>
)。
私はすべてのオプションを試しましたが、どれもうまくいきませんでした。
助けてくれたのは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
これがお役に立てば幸いです。
=COUNTIFS(A:A; A1; B:B; B1)>1