Saya mencari rumus untuk sel sorotan spreadsheet google jika nilai duplikat di kolom yang sama
adakah yang bisa membantu saya untuk pertanyaan ini?
Saya mencari rumus untuk sel sorotan spreadsheet google jika nilai duplikat di kolom yang sama
adakah yang bisa membantu saya untuk pertanyaan ini?
Jawaban:
Coba ini:
Custom formula is
=countif(A:A,A1)>1
(atau ubah A
ke kolom yang Anda pilih)A1:A100
).Apa pun yang ditulis dalam sel A1: A100 akan diperiksa, dan jika ada duplikat (terjadi lebih dari sekali) maka akan diwarnai.
Untuk lokal yang menggunakan koma ( ,
) sebagai pemisah desimal, pemisah argumen kemungkinan besar adalah titik koma ( ;
). Artinya, coba =countif(A:A;A1)>1
:, sebagai gantinya.
Untuk beberapa kolom, gunakan countifs
.
;
hasil akhirnya merupakan kesalahan "rumus tidak valid" untuk saya. Menghapusnya saja sudah cukup. Hati-hati juga: sel yang Anda tentukan sebagai argumen ke-2 dari countif
seharusnya sel pertama dari rentang yang Anda pilih.
=countif(B:B,B2)>1
. Ini memungkinkan seseorang untuk melakukan beberapa pemformatan yang cukup canggih ketika menggunakan referensi sel relatif vs relatif.
Sementara jawaban zolley sangat tepat untuk pertanyaan, berikut adalah solusi yang lebih umum untuk rentang apa pun, ditambah penjelasan:
=COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1
Harap perhatikan bahwa dalam contoh ini saya akan menggunakan rentang A1:C50
. Parameter pertama ( $A$1:$C$50
) harus diganti dengan rentang yang ingin Anda sorot duplikat!
untuk menyoroti duplikat:
Format
>Conditional formatting...
Apply to range
, pilih rentang penerapan aturan.Format cells if
, pilih Custom formula is
pada dropdown.Mengapa ini berhasil?
COUNTIF(range, criterion)
, akan membandingkan setiap sel di range
dalam criterion
, yang diproses mirip dengan rumus. Jika tidak ada operator khusus yang disediakan, itu akan membandingkan setiap sel dalam rentang dengan sel yang diberikan, dan mengembalikan jumlah sel yang ditemukan cocok dengan aturan (dalam hal ini, perbandingan). Kami menggunakan rentang tetap (dengan $
tanda) sehingga kami selalu melihat rentang penuh.
Blok kedua INDIRECT(ADDRESS(ROW(), COLUMN(), 4))
,, akan mengembalikan konten sel saat ini. Jika ini ditempatkan di dalam sel, dokter akan menangis tentang ketergantungan melingkar, tetapi dalam kasus ini, rumus dievaluasi seolah-olah itu di dalam sel, tanpa mengubahnya.
ROW()
dan COLUMN()
akan mengembalikan nomor baris dan nomor kolom masing-masing sel. Jika tidak ada parameter yang diberikan, sel saat ini akan dikembalikan (ini berbasis 1, misalnya, B3
akan mengembalikan 3 untuk ROW()
, dan 2 untuk COLUMN()
).
Kemudian kita menggunakan: ADDRESS(row, column, [absolute_relative_mode])
untuk menerjemahkan baris dan kolom angka ke referensi sel (seperti B3
. Ingat, ketika kita berada di dalam konteks sel, kita tidak tahu itu alamat ATAU konten, dan kita perlu konten untuk membandingkan dengan). Parameter ketiga menangani pemformatan, dan 4
mengembalikan INDIRECT()
suka pemformatan .
INDIRECT()
, akan mengambil referensi sel dan mengembalikan kontennya. Dalam hal ini, konten sel saat ini. Kemudian kembali ke awal, COUNTIF()
akan menguji setiap sel dalam rentang terhadap kita, dan mengembalikan hitungan.
Langkah terakhir adalah membuat rumus kita kembali boolean, dengan membuat ekspresi logis: COUNTIF(...) > 1
. Ini > 1
digunakan karena kita tahu setidaknya ada satu sel yang identik dengan kita. Itu sel kita, yang berada dalam kisaran, dan dengan demikian akan dibandingkan dengan dirinya sendiri. Jadi untuk menunjukkan duplikat, kita perlu menemukan 2 atau lebih sel yang cocok dengan kita.
Sumber:
*
) dan cek lain, jadi di sepanjang baris ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...)))))
. Itu yang terbaik yang bisa saya lakukan di ponsel. :)
$A$1:$C$50
- sesuai dengan kolom yang dimaksud. Saya suka pendekatan yang lebih umum ini daripada zolley.
Jawaban dari zolley benar. Hanya menambahkan Gif dan langkah-langkah untuk referensi.
Format > Conditional formatting..
Format cells if..
=countif(A:A,A1)>1
bidangCustom formula is
A
dengan kolom Anda sendiri.Dari menu tarik-turun "Isi Teks", pilih "Formula khusus adalah:", dan tulis: "= countif (A: A, A1)> 1" (tanpa tanda kutip)
Saya melakukan persis seperti yang diusulkan zolley , tetapi harus dilakukan koreksi kecil: gunakan "rumus khusus" bukan " Isi Teks" . Dan kemudian rendering bersyarat akan bekerja.
Text Contains
, sehingga itulah yang biasanya diklik pengguna untuk mengakses menu dropdown.
=COUNTIF(C:C, C1) > 1
Penjelasan: Di C1
sini tidak merujuk ke baris pertama dalam C. Karena rumus ini dievaluasi oleh aturan format bersyarat, sebagai gantinya, ketika rumus diperiksa untuk melihat apakah itu berlaku, yang C1
secara efektif merujuk ke baris mana pun yang saat ini sedang dievaluasi untuk lihat apakah highlight harus diterapkan. ( Jadi lebih seperti INDIRECT(C &ROW())
, jika itu ada artinya bagimu! ). Pada dasarnya, ketika mengevaluasi formula format bersyarat, apa pun yang merujuk ke baris 1 dievaluasi terhadap baris yang sedang dijalankan terhadap formula tersebut. ( Dan ya, jika Anda menggunakan C2 maka Anda meminta aturan untuk memeriksa status baris tepat di bawah yang saat ini sedang dievaluasi. )
Jadi ini mengatakan, hitung kejadian apa pun yang ada di C1
(sel saat ini sedang dievaluasi) yang ada di seluruh kolom C
dan jika ada lebih dari 1 dari mereka (yaitu nilai memiliki duplikat) maka: terapkan sorot ( karena rumus , keseluruhan, dievaluasi menjadiTRUE
).
=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)
Penjelasan: Ini hanya menyoroti jika keduanya COUNTIF
adalah TRUE
(mereka muncul di dalam sebuah AND()
).
Istilah pertama yang akan dievaluasi COUNTIF(C:C, C1) > 1
adalah sama persis dengan contoh pertama; itu TRUE
hanya jika apa yang ada di C1
memiliki duplikat. ( Ingat bahwa C1
secara efektif merujuk ke baris saat ini sedang diperiksa untuk melihat apakah harus disorot ).
Istilah kedua ( COUNTIF(C$1:C1, C1) = 1
) terlihat mirip tetapi memiliki tiga perbedaan penting:
Itu tidak mencari seluruh kolom C
(seperti yang pertama:) C:C
tetapi malah memulai pencarian dari baris pertama: C$1
( $
memaksa untuk melihat secara harfiah pada baris 1
, bukan pada baris mana pun yang sedang dievaluasi).
Dan kemudian menghentikan pencarian di baris saat ini sedang dievaluasi C1
.
Akhirnya dikatakan = 1
.
Jadi, itu hanya akan terjadi TRUE
jika tidak ada duplikat di atas baris yang saat ini sedang dievaluasi (artinya itu harus yang pertama dari duplikat).
Dikombinasikan dengan istilah pertama itu (yang hanya akan menjadi TRUE
jika baris ini memiliki duplikat) ini berarti hanya kejadian pertama yang akan disorot.
=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)
Penjelasan: Ekspresi pertama sama seperti biasa ( TRUE
jika baris yang saat ini dievaluasi adalah duplikat sama sekali).
Istilah kedua persis sama dengan yang terakhir kecuali itu dinegasikan: Ada NOT()
di sekitarnya. Jadi itu mengabaikan kejadian pertama.
Akhirnya istilah ketiga mengambil duplikat 2, 3 dll. COUNTIF(C1:C, C1) >= 1
Memulai rentang pencarian di baris yang saat ini dievaluasi ( C1
di dalam C1:C
). Maka hanya mengevaluasi untuk TRUE
(menerapkan highlight) jika ada satu atau lebih duplikat di bawah ini (dan termasuk yang ini): >= 1
(itu harus >=
bukan hanya >
jika tidak duplikat terakhir diabaikan).
Saya mencoba semua opsi dan tidak ada yang berhasil.
Hanya skrip aplikasi google yang membantu saya.
sumber: https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets
Di bagian atas dokumen Anda
1.- buka alat> editor skrip
2.- tetapkan nama skrip Anda
3.- tempel kode ini:
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.- simpan dan jalankan
Dalam waktu kurang dari 3 detik, baris duplikat saya sudah berwarna. Cukup salin-lewati skrip.
Jika Anda tidak tahu tentang skrip google apps, tautan ini dapat membantu Anda:
https://zapier.com/learn/google-sheets/google-apps-script-tutorial/
https://developers.google.com/apps-script/overview
Saya harap ini membantu.
=COUNTIFS(A:A; A1; B:B; B1)>1