ฉันกำลังมองหาสูตรเซลล์ไฮไลต์สเปรดชีตของ Google หากค่าซ้ำในคอลัมน์เดียวกัน
ทุกคนสามารถช่วยฉันสำหรับแบบสอบถามนี้ได้ไหม
ฉันกำลังมองหาสูตรเซลล์ไฮไลต์สเปรดชีตของ Google หากค่าซ้ำในคอลัมน์เดียวกัน
ทุกคนสามารถช่วยฉันสำหรับแบบสอบถามนี้ได้ไหม
คำตอบ:
ลองสิ่งนี้:
Custom formula is
=countif(A:A,A1)>1
(หรือเปลี่ยนA
เป็นคอลัมน์ที่คุณเลือก)A1:A100
)สิ่งใดก็ตามที่เขียนในเซลล์ A1: A100 จะถูกตรวจสอบและหากมีการทำซ้ำ (เกิดขึ้นมากกว่าหนึ่งครั้ง) จะมีการทำสี
สำหรับโลแคลที่ใช้เครื่องหมายจุลภาค ( ,
) เป็นตัวคั่นทศนิยมตัวคั่นอาร์กิวเมนต์มักเป็นเซมิโคลอน ( ;
) นั่นคือลอง: =countif(A:A;A1)>1
แทน
countifs
สำหรับหลายคอลัมน์การใช้งาน
;
ผลลัพธ์สิ้นสุดในข้อผิดพลาด "สูตรที่ไม่ถูกต้อง" สำหรับฉัน เพียงแค่ลบมันได้เคล็ดลับ ระวังด้วย: เซลล์ที่คุณระบุเป็นอาร์กิวเมนต์อันดับที่ 2 ของcountif
เซลล์ควรเป็นเซลล์แรกของช่วงที่คุณเลือก
=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
ซึ่งจะถูกประมวลผลคล้ายกับสูตร หากไม่มีโอเปอเรเตอร์พิเศษจะทำการเปรียบเทียบทุกเซลล์ในช่วงกับเซลล์ที่กำหนดและคืนจำนวนเซลล์ที่พบว่าตรงกับกฎ (ในกรณีนี้คือการเปรียบเทียบ) เรากำลังใช้ช่วงคงที่ (พร้อม$
เครื่องหมาย) เพื่อให้เราดูตลอดช่วง
บล็อกที่สองINDIRECT(ADDRESS(ROW(), COLUMN(), 4))
จะส่งคืนเนื้อหาของเซลล์ปัจจุบัน หากสิ่งนี้ถูกวางไว้ในเซลล์เอกสารจะร้องไห้เกี่ยวกับการพึ่งพาแบบวนรอบ แต่ในกรณีนี้สูตรจะถูกประเมินว่าเหมือนกับอยู่ในเซลล์โดยไม่เปลี่ยนแปลง
ROW()
และCOLUMN()
จะส่งคืนหมายเลขแถวและหมายเลขคอลัมน์ของเซลล์ที่กำหนดตามลำดับ หากไม่มีการระบุพารามิเตอร์เซลล์ปัจจุบันจะถูกส่งคืน (ซึ่งเป็นแบบ 1 เช่นB3
จะส่งคืน 3 สำหรับROW()
และ 2 สำหรับCOLUMN()
)
จากนั้นเราใช้: ADDRESS(row, column, [absolute_relative_mode])
เพื่อแปลแถวตัวเลขและคอลัมน์เป็นการอ้างอิงเซลล์ (เช่นB3
จำไว้ว่าในขณะที่เราอยู่ในบริบทของเซลล์เราไม่ทราบว่าเป็นที่อยู่หรือเนื้อหาและเราต้องการเนื้อหาเพื่อเปรียบเทียบกับ) พารามิเตอร์ที่สามดูแลการจัดรูปแบบและ4
ส่งกลับการจัดรูปแบบที่INDIRECT()
ชอบ
INDIRECT()
จะทำการอ้างอิงเซลล์และส่งคืนเนื้อหา ในกรณีนี้เนื้อหาของเซลล์ปัจจุบัน จากนั้นกลับไปที่จุดเริ่มต้นCOUNTIF()
จะทดสอบทุกเซลล์ในระยะเทียบกับของเราแล้วส่งกลับจำนวน
COUNTIF(...) > 1
ขั้นตอนสุดท้ายคือการทำสูตรของเรากลับมาบูลโดยการทำให้มันเป็นตรรกะการแสดงออก: > 1
ถูกนำมาใช้เพราะเรารู้ว่ามีอย่างน้อยหนึ่งเซลล์เหมือนกันกับเรา นั่นคือเซลล์ของเราซึ่งอยู่ในช่วงและจะเปรียบเทียบกับตัวเอง ดังนั้นเพื่อระบุความซ้ำซ้อนเราจำเป็นต้องค้นหาเซลล์อย่างน้อย 2 เซลล์ที่ตรงกับของเรา
แหล่งที่มา:
*
) ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...)))))
และการตรวจสอบอื่นดังนั้นตามสายของ นั่นเป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้บนมือถือ :)
$A$1:$C$50
ไปตามคอลัมน์ที่อยู่ภายใต้คำถาม ฉันชอบวิธีการทั่วไปมากกว่า zolley
คำตอบของ @zolley ถูกต้อง เพียงเพิ่ม Gif และขั้นตอนสำหรับการอ้างอิง
Format > Conditional formatting..
Format cells if..
=countif(A:A,A1)>1
ในช่องCustom formula is
A
ด้วยคอลัมน์ของคุณเองจากเมนูแบบเลื่อนลง "ข้อความมี" ให้เลือก "สูตรแบบกำหนดเองคือ:" และเขียน: "= countif (A: A, A1)> 1" (ไม่มีเครื่องหมายคำพูด)
ผมว่าเป็นzolleyเสนอ แต่มีควรจะทำการแก้ไขขนาดเล็กใช้งาน: ใช้"สูตรที่กำหนดเองเป็น"แทน"ข้อความที่ประกอบด้วย" จากนั้นการเรนเดอร์ตามเงื่อนไขจะทำงาน
Text Contains
นั้นเป็นสิ่งที่ผู้ใช้มักจะคลิกเพื่อเข้าสู่เมนูแบบเลื่อนลง
=COUNTIF(C:C, C1) > 1
คำอธิบาย: C1
ที่นี่ไม่ได้อ้างถึงแถวแรกใน C เนื่องจากสูตรนี้ได้รับการประเมินโดยกฎรูปแบบที่มีเงื่อนไขแทนเมื่อสูตรถูกตรวจสอบเพื่อดูว่ามีการใช้หรือไม่การC1
อ้างอิงที่มีประสิทธิภาพหมายถึงแถวใดก็ตามที่กำลังถูกประเมิน ดูว่าควรจะใช้ไฮไลต์ (ถ้าอย่างนั้นมันก็INDIRECT(C &ROW())
หมายความว่าอะไรก็ตามสำหรับคุณ! ) โดยพื้นฐานแล้วเมื่อประเมินสูตรการจัดรูปแบบตามเงื่อนไขสิ่งใดก็ตามที่อ้างถึงแถว 1 จะถูกประเมินเทียบกับแถวที่สูตรนั้นถูกเรียกใช้ ( และใช่ถ้าคุณใช้ C2 คุณจะต้องถามกฎเพื่อตรวจสอบสถานะของแถวด้านล่างของแถวที่กำลังประเมินอยู่ )
ดังนั้นสิ่งนี้จึงบอกว่าเกิดสิ่งที่มีอยู่ในนั้น C1
(เซลล์ปัจจุบันที่กำลังประเมิน) ที่อยู่ในคอลัมน์ทั้งหมดC
และถ้ามีมากกว่า 1 รายการ (เช่นค่ามีค่าซ้ำกัน): ใช้ไฮไลต์ ( เพราะสูตร โดยรวมแล้วประเมินเป็นTRUE
)
=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)
คำอธิบาย: นี่จะเน้นเฉพาะถ้าทั้งสองอย่าง COUNTIF
มีTRUE
(พวกเขาปรากฏภายในAND()
)
คำแรกที่จะได้รับการประเมิน ( COUNTIF(C:C, C1) > 1
) จะเหมือนกันในตัวอย่างแรก มันก็TRUE
ต่อเมื่อสิ่งที่อยู่ในC1
นั้นมีซ้ำ ( โปรดจำไว้ว่าC1
หมายถึงแถวปัจจุบันที่ถูกตรวจสอบอย่างมีประสิทธิภาพเพื่อดูว่าควรเน้นหรือไม่ )
เทอมที่สอง ( COUNTIF(C$1:C1, C1) = 1
) มีลักษณะคล้ายกัน แต่มีความแตกต่างที่สำคัญสามประการ:
มันไม่ได้ค้นหาทั้งคอลัมน์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
ถ้าแถวที่ประเมินในปัจจุบันเป็นซ้ำเลย)
เทอมที่สองนั้นเหมือนกับเทอมสุดท้ายยกเว้นเมื่อตะกี้: มันมีNOT()
อยู่โดยรอบ ดังนั้นมันจึงไม่สนใจสิ่งที่เกิดขึ้นครั้งแรก
ในที่สุดเทอมที่สามหยิบสำเนาที่ซ้ำกัน 2, 3 เป็นต้นCOUNTIF(C1:C, C1) >= 1
เริ่มช่วงการค้นหาที่แถวที่ประเมินในปัจจุบัน ( C1
ในC1:C
) จากนั้นจะประเมินเป็นTRUE
(ใช้ไฮไลต์) หากมีหนึ่งรายการที่ซ้ำกันด้านล่างนี้ (และรวมถึงรายการนี้): >= 1
(ต้อง>=
ไม่>
ซ้ำกันมิฉะนั้นรายการซ้ำล่าสุดจะถูกละเว้น)
ฉันลองตัวเลือกทั้งหมดและไม่มีใครทำงาน
สคริปต์แอป google เท่านั้นที่ช่วยฉัน
แหล่งที่มา: 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