จะไฮไลต์เซลล์ได้อย่างไรหากค่าซ้ำกันในคอลัมน์เดียวกันสำหรับ Google สเปรดชีต


271

ฉันกำลังมองหาสูตรเซลล์ไฮไลต์สเปรดชีตของ Google หากค่าซ้ำในคอลัมน์เดียวกัน

ทุกคนสามารถช่วยฉันสำหรับแบบสอบถามนี้ได้ไหม

คำตอบ:


474

ลองสิ่งนี้:

  1. เลือกทั้งคอลัมน์
  2. คลิกรูปแบบ
  3. คลิกการจัดรูปแบบตามเงื่อนไข
  4. คลิกเพิ่มกฎอื่น (หรือแก้ไขกฎปัจจุบัน / ค่าเริ่มต้น)
  5. ตั้งค่าFormat เซลล์ถ้าเป็น: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
;ผลลัพธ์สิ้นสุดในข้อผิดพลาด "สูตรที่ไม่ถูกต้อง" สำหรับฉัน เพียงแค่ลบมันได้เคล็ดลับ ระวังด้วย: เซลล์ที่คุณระบุเป็นอาร์กิวเมนต์อันดับที่ 2 ของcountifเซลล์ควรเป็นเซลล์แรกของช่วงที่คุณเลือก
edelans

11
มันได้ผล. แต่ทำไม สมมติว่า A1 เป็นเกณฑ์สำหรับสมการสูตรนี้ไม่ได้เปรียบเทียบเซลล์ทั้งหมดในช่วงถึง A1 หรือไม่
mafonya

9
@mafonya สูตรที่กำหนดเองเป็นสูตรทั่วไปที่ต้องอ่านว่าใช้กับเซลล์แรก การอ้างอิงทั้งหมดจะถูกปรับให้เหมาะกับเซลล์แต่ละเซลล์ในช่วงที่เลือกไว้ ดังนั้นสำหรับตัวอย่างเช่นเมื่อตรวจสอบเซลล์ B2 =countif(B:B,B2)>1สูตรจะกลายเป็นภายใน สิ่งนี้อนุญาตให้หนึ่งทำการฟอร์แมตขั้นสูงสวย ๆ เมื่อใช้การอ้างอิงสัมบูรณ์เทียบกับเซลล์แบบอ้างอิง
asoundmove

14
ถ้าคุณต้องการนำไปใช้กับทั้งคอลัมน์คุณสามารถใช้สูตร= countif (A: 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)จะเปรียบเทียบทุกเซลล์ใน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 ()
  • ความช่วยเหลือของเครื่องมือแก้ไขเอกสาร: INDIRECT ()
  • ความช่วยเหลือของเครื่องมือแก้ไขเอกสาร: ADDRESS ()
  • ความช่วยเหลือของเครื่องมือแก้ไขเอกสาร: ROW ()
  • ความช่วยเหลือของเครื่องมือแก้ไขเอกสาร: COLUMN ()

4
น่าเศร้าที่มันไม่ได้ผลสำหรับฉัน มันไม่สามารถเน้นอะไรได้เลยแม้จะมีการซ้ำซ้อนมากมาย ไม่แน่ใจว่าทำไมมันฟังดูเหมือนเป็นทางออกที่ดี
JVC

สิ่งนี้ใช้งานได้สำหรับฉัน แต่ยังเน้นเซลล์ว่าง มีวิธีแยกช่องว่างหรือไม่?
gillespieza

1
@Amanda - ใช่ความคิดสร้างสรรค์เล็กน้อยและเป็นไปได้ ฉัน AFK สำหรับสัปดาห์ แต่จับฉันในหนึ่งสัปดาห์และครึ่งและฉันยินดีที่จะช่วย ความคิดที่จะสร้างและคำสั่ง (ใช้*) ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...)))))และการตรวจสอบอื่นดังนั้นตามสายของ นั่นเป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้บนมือถือ :)
เห็นแก่ตัว

2
ตรงนี้เป็นทางออกที่จำเป็น นี่ใช้งานได้เหมือน HASHMAP เพื่อระบุความซ้ำซ้อน
AKh

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

@Faisal เฉพาะกับสคริปต์หรือ addon
player0

27

จากเมนูแบบเลื่อนลง "ข้อความมี" ให้เลือก "สูตรแบบกำหนดเองคือ:" และเขียน: "= countif (A: A, A1)> 1" (ไม่มีเครื่องหมายคำพูด)

ผมว่าเป็นzolleyเสนอ แต่มีควรจะทำการแก้ไขขนาดเล็กใช้งาน: ใช้"สูตรที่กำหนดเองเป็น"แทน"ข้อความที่ประกอบด้วย" จากนั้นการเรนเดอร์ตามเงื่อนไขจะทำงาน

ภาพหน้าจอจากเมนู


1
ฉันไม่ได้ลงคะแนนคุณ (ฉันเพิ่งพบคำถามนี้ในวันนี้) แต่นี่คือความคิดเห็นในคำตอบของคุณตามที่คุณร้องขอ ฉันไม่คิดว่าจำเป็นต้องใช้เครื่องหมายอัฒภาคในสูตร นอกจากนี้ฉันยังเห็นรายการแบบหล่นลงในแผงการจัดรูปแบบตามเงื่อนไขใน Google ชีต อย่างน้อยฉันคลิกที่ตัวเลือกการเลือกและมีตัวเลือกชุดยาวปรากฏขึ้นซึ่งโดยทั่วไปฉันจะเรียกเมนูแบบเลื่อนลง ตัวเลือกที่ปรากฏขึ้นในตอนแรกของเมนูแบบเลื่อนลงText Containsนั้นเป็นสิ่งที่ผู้ใช้มักจะคลิกเพื่อเข้าสู่เมนูแบบเลื่อนลง
Paul de Barros

ขอบคุณพอลสำหรับความคิดเห็นของคุณ บางทีฉันอาจเข้าใจผิด: ฉันเข้าใจว่า "ข้อความมี" (หรือ "จัดรูปแบบเซลล์ถ้า ... ") มีเมนูแบบหล่นลง "สูตรที่กำหนดเองคือ:" ยิ่งกว่านั้น "ข้อความประกอบด้วย" ควรมีค่าสตริงย่อยที่สอดคล้องกันไม่ใช่ "= countif (A: A, A1)> 1;" ในความเป็นจริงมันเป็นวิธีการอื่น
Shurik

12

ไฮไลต์รายการซ้ำ (ในคอลัมน์ C):

=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(ต้อง>=ไม่>ซ้ำกันมิฉะนั้นรายการซ้ำล่าสุดจะถูกละเว้น)


3

ฉันลองตัวเลือกทั้งหมดและไม่มีใครทำงาน

สคริปต์แอป 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

ฉันหวังว่านี่จะช่วยได้.


รหัสนี้สามารถปรับเปลี่ยนเพื่อเน้นเฉพาะฟิลด์ที่ซ้ำกันในคอลัมน์ด้วยสีแดงแทนที่จะเป็นแถวเต็มได้หรือไม่
Amr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.