ฉันจะค้นหารายการที่ซ้ำกันในคอลัมน์โดยใช้สูตรได้อย่างไร


11

มีใครคิดสูตรในการค้นหารายการที่ซ้ำกันในคอลัมน์หรือไม่? ตัวอย่างเช่น:

a
b
c
d
b
d

=somefunction(A1:A6)

เอาท์พุท:

b
d

ฉันรู้ว่ามี=unique()ฟังก์ชั่นมันเป็น=not_unique()ฟังก์ชั่นโดยทั่วไป สงสัยว่ามันสามารถสร้างได้โดยไม่ต้องใช้รหัสหรือไม่


ต่อไปนี้เป็นตัวอย่างหนึ่งในstackoverflow.com/questions/19843406/เธรดนี้ลองดูที่ซึ่งอาจทำให้คุณมีความคิด
Vembu

เดี๋ยวก่อนสิ่งที่คุณกำลังมองหาคือnot_uniqueฟังก์ชั่นใช่มั้ย ดูเหมือนว่าคุณจะมองหาสาขาที่ไม่ซ้ำกัน (ซ้ำ) ไม่ใช่เขตข้อมูลที่มีที่ไม่ซ้ำกัน
David Mulder

คำตอบ:



3

วิธีเดียวที่ฉันพบ (ใช้สูตร) ​​คือการแนะนำcountคอลัมน์ใหม่

หากค่าของคุณมีการระบุไว้ในคอลัมน์Aเริ่มต้นในแถว2ใส่สูตร=COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))ในB2และลากลงไปคัดลอก สิ่งนี้ให้:

| A: VALUE  | B: COUNT |
|-----------|----------|
|     a     |     1    |
|     b     |     2    |
|     c     |     1    |
|     d     |     2    |
|     b     |     2    |
|     d     |     2    |

ตอนนี้เรามีการนับที่ปรากฏของแต่ละค่าที่เราสามารถกรองคอลัมน์ค่าจากA Bในเซลล์ใส่สูตรC2 =UNIQUE(FILTER(A2:A7, B2:B7 > 1))สิ่งนี้ให้:

| A: VALUE  | B: COUNT | C: DUPS |
|-----------|----------|---------|
|     a     |     1    |    b    |
|     b     |     2    |    d    |
|     c     |     1    |         |
|     d     |     2    |         |
|     b     |     2    |         |
|     d     |     2    |         |

คำอธิบายของสูตร

=COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))

  • filterข้อตรวจสอบAคอลัมน์และพบว่าเซลล์ซึ่งมีมูลค่าเช่นเดียวกับมือถือA2( A2ถูกแทนที่ด้วยเซลล์ที่สอดคล้องกันเมื่อคัดลอกสูตร)
  • counta นับค่า (รวมถึงที่ไม่ใช่ตัวเลข)

=UNIQUE(FILTER(A2:A7, B2:B7 > 1))

  • นี้filterตรวจสอบคอลัมน์Bสำหรับค่าที่และผลตอบแทนค่าที่สอดคล้องกันจากคอลัมน์> 1 ฟังก์ชั่นก็ทำให้แน่ใจว่าเราจะกลับมาแต่ละค่าครั้งเดียวดังนั้นเราอย่าได้รับสองครั้งตัวอย่างเช่นAuniqueb

อย่างไรก็ตามวิธีที่สวยงามกว่านั้นก็คือการใช้ฟังก์ชั่นสคริปต์:

function dups(rows) {
  var values = {};
  var duplicates = [];
  for (var i = 0; i < rows.length; i++) {
    var value = rows[i][0];
    if (values[value] !== undefined && duplicates.indexOf(value) == -1) {
      duplicates.push(value);
    } else {
      values[value] = true
    }
  }
  return duplicates;
}

ไปที่เครื่องมือ→ตัวแก้ไขสคริปต์วางรหัสด้านบนและบันทึก ตอนนี้คุณสามารถเรียกใช้ฟังก์ชันได้โดยป้อนสูตร=dups(A2:A7)ได้ทุกที่ A2:A7ผลตอบแทนที่ซ้ำกันนี้ที่พบใน


ฉันได้ตั้งสเปรดชีตตัวอย่างเพื่อแสดงให้เห็นทั้งความเป็นไปได้อย่าลังเลที่จะดูและคัดลอกมัน


ค่า var = {}จำเป็นต้องเป็นค่า var = []ใช่ไหม
Jacob Jan Tuinstra

1
จริงๆแล้วไม่มี valuesใช้เป็นแผนที่คีย์ - ค่าไม่ใช่อาเรย์เพื่อให้ง่ายต่อการตรวจสอบว่าเราได้ประมวลผลค่าเฉพาะแล้ว - ทั้งที่values[property]มีอยู่หรือไม่
Vidar S. Ramdal

1
ฉันคิดว่าคุณได้รับการผลักดันเป็นอาร์เรย์ .... ผมทดสอบโค้ดของคุณและจะช่วยให้การแสดงรายการที่ซ้ำกันในขณะที่d, d, D, D ... โซลูชันสูตรที่คุณระบุไม่ได้ทำเช่นนั้น
Jacob Jan Tuinstra

1
ฉันหมายถึงวัตถุ
Jacob Jan Tuinstra

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