ฉันจะรับค่าที่แตกต่าง / ไม่ซ้ำกันในคอลัมน์ใน Excel ได้อย่างไร


281

หากฉันมีคอลัมน์ที่มีค่าและฉันต้องการค้นหาว่ามีค่าที่แตกต่างกันอยู่ในนั้น (ไม่ใช่จำนวนเท่าใด - แต่มีค่าที่แตกต่างกันจริง) ฉันจะทำอย่างไร

ใน SQL Server ฉันจะทำสิ่งที่ชอบ

SELECT Distinct(MyColumn) FROM MyTable

ที่เกี่ยวข้อง: stackoverflow.com/questions/13307927/…
alexanderbird

คำตอบ:


297

ง่ายกว่าที่คุณคิด:

  • คลิกเมนูData Ribbon
  • เลือกขั้นสูงปุ่มในเรียงลำดับและกรองส่วน
  • กรอกข้อมูลลงในกล่องโต้ตอบคัดลอกผลลัพธ์ไปยังตำแหน่งอื่นและตรวจสอบให้แน่ใจว่าคุณทำเครื่องหมายเฉพาะระเบียนที่ไม่ซ้ำเท่านั้น

ป้อนคำอธิบายรูปภาพที่นี่


30
สำหรับพวกเราที่ยังคงดำรงอยู่โดยปราศจากริบบิ้นมันเป็นข้อมูล -> ตัวกรอง -> ขั้นสูง
JT Grimes

10
+1 วิธีนี้เหนือกว่าการลบข้อมูลซ้ำหากคุณต้องการเก็บข้อมูลเดิมเอาไว้
Excellll

17
หากการคัดลอกข้อมูลไปยังชีตอื่นคุณต้องเริ่มต้นไดอะล็อกขั้นสูงจากชีตที่คุณต้องการคัดลอกมิฉะนั้นคุณจะได้รับYou can only copy filtered data to the active sheetข้อผิดพลาด
เดฟ Zych

5
สิ่งนี้จะไม่อัปเดตเมื่อค่าช่วงแหล่งที่มาเปลี่ยนไป มีวิธีใดที่จะทำให้เป็นพลวัตหรือไม่?
hughes

129

Excel 2007 และ 2010:
ใช้Remove Duplicatesตัวเลือกเมนูใต้หัวข้อข้อมูล

Excel 2003:
วิธีง่าย ๆ :

  1. ตรวจสอบให้แน่ใจว่าข้อมูลของคุณมีส่วนหัว
  2. ข้อมูล -> ตัวกรอง -> ตัวกรองขั้นสูง
  3. ตรวจสอบบันทึกที่ไม่ซ้ำเท่านั้น
  4. เลือกคัดลอกไปยังตำแหน่งอื่น
  5. คลิกตกลง

วิธีที่ยาก:

เขียนแมโครด้วยรหัสต่อไปนี้:

'Remove duplicates from sorted list
Sub getDistinct()
    Do While ActiveCell.Value <> ""
        If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
            ActiveCell.Select
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop
End Sub

ที่ให้รายการที่แตกต่างของคุณ คุณอาจต้องการคัดลอกรายการของคุณไปยังชีตอื่นก่อน


20
ขอบคุณ! นี่เป็นข้อพิสูจน์ว่า Stack Exchange นั้นดีกว่าแหล่งข้อมูลทางเทคนิคอื่น ๆ ผลการค้นหา google อื่น ๆ ทั้งหมดไร้ประโยชน์และไม่ได้จัดอันดับ นอกจากนี้ฉันสงสัยว่าผู้เชี่ยวชาญแลกเปลี่ยนกันรอดได้อย่างไร
Eran Medan

21

ผมใช้สองวิธีหลักที่จะได้รับค่าที่แตกต่างกัน - ครั้งแรกเป็นที่ทรงคุณค่าRemove Duplicatesเป็นเครื่องมือแนะนำโดยนาธาน DeWitt

ข้อเสียRemove Duplicatesคือคุณสูญเสียข้อมูล แม้จะมีพลังของCtrl+ zคุณอาจไม่ต้องการทำสิ่งนี้ด้วยเหตุผลต่าง ๆ - เช่นคุณอาจมีตัวกรองที่เลือกไว้ในปัจจุบันซึ่งค่อนข้างยุ่งที่จะลบรายการที่ซ้ำเพื่อรับรายการค่าที่แตกต่าง

วิธีอื่น ๆ ที่ไม่ได้กล่าวถึงข้างต้นคือการใช้ Pivot Table

สมมติว่านี่เป็นตารางของคุณและคุณต้องการรับรายการแพลตฟอร์มที่แตกต่างกัน ตารางหุ่น

แทรก a Pivot Tableด้วยตารางเป็นแหล่งข้อมูลของคุณ

ตอนนี้เลือก(s) ชานชาลาRow Labelsคอลัมน์เป็นของคุณ

Voila! รายการค่าที่แตกต่าง

ตารางเดือยเป็นรายการค่าที่แตกต่าง

หากคุณต้องการให้เป็นระเบียบเรียบร้อยนี้คุณสามารถปิดField Headersและตั้งให้เป็นGrand TotalsOff for Rows and Columns


1
เทคนิค PivotTable ยอดเยี่ยม! ขอบคุณสำหรับสิ่งนี้.
Thomas L Holaday

20

หรือ (วิธีหยาบอย่างง่าย):

ใน B1

=IF(COUNTIF(A$1:A1,A1)=1,A1,"") 

และคัดลอกลง มันเพียงแค่คัดลอกการเกิดขึ้นครั้งแรกของแต่ละค่าข้าม (ในแถวที่เกิดขึ้น)


1
เช่นเดียวกับสูตร Excel ทั้งหมดคุณอาจต้องใช้เครื่องหมายอัฒภาค ( ;) แทนเครื่องหมายจุลภาค ( ,) ตามการตั้งค่าภูมิภาคของระบบ
สกอตต์

5

หรือคุณสามารถรวมตัวเลือกตัวกรองในแมโคร

    Columns("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

3

สำหรับฉันวิธีการเรียงลำดับที่ง่ายที่สุดคือใช้ตัวเลือก "ตัวกรอง"

ขั้นตอนแรกคือค้นหาค่าที่ซ้ำกันด้วยการจัดรูปแบบตามเงื่อนไข -> เน้นกฎเซลล์ -> ค่าซ้ำ

จากนั้นคลิกลูกศรบนคอลัมน์ที่คุณมีรายการซ้ำ (ในกรณีนี้ "แพลตฟอร์ม") -> กรองตามสี (สีของเซลล์หรือสีแบบอักษร)


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