รวมค่าเซลล์ที่ไม่ซ้ำกันในแถวเดียว


0

ดูภาพด้านล่างของ 3 อินพุตของฉัน (คอลัมน์ A: C) และเอาท์พุทที่คาดหวัง (คอลัมน์ D)

ฉันต้องการแสดงรายการค่าที่ไม่ซ้ำกันสำหรับแต่ละแถวเป็นผลลัพธ์โดยคั่นด้วยเครื่องหมายจุลภาค

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


1
ฉันลงคะแนนเพื่อปิดคำถามนี้เป็นนอกหัวข้อเนื่องจากคำถามต้องแสดงให้เห็นถึงจำนวนของการวิจัยและความเข้าใจที่เหมาะสมของปัญหาที่กำลังแก้ไข โปรดแก้ไขเป็นก) อธิบายปัญหาของคุณอย่างชัดเจนและการวิจัยได้ทำไปแล้วเพื่อแก้ไขหรือข) รวมถึงวิธีแก้ไขปัญหาที่ได้ลองแล้วรวมทั้งสาเหตุที่ใช้ไม่ได้ ไม่ว่าในกรณีใดให้แน่ใจว่าผลลัพธ์ที่คุณคาดหวังนั้นถูกนำเสนออย่างชัดเจน
เท็ตสึจิน

คำตอบ:


3

ในเซลล์ D1 ใช้:

=TRIM(A1&IF(COUNTIF(A1:C1,B1)>1,"",","&B1)&IF(COUNTIF(A1:C1,C1)>1,"",","&C1))

จากนั้นลากลง

หากคุณมีคอลัมน์เพิ่มเติมให้เพิ่ม&IF(COUNTIF(A1:C1,C1)>1,"",","&C1)เปลี่ยน C1 เป็น D1 สำหรับคอลัมน์ที่สี่และเป็น E1 สำหรับหนึ่งในห้าและต่อไป

นอกจากนี้ยังเปลี่ยนA1:C1ในCOUNTIFเพื่อให้เหมาะกับช่วงของคอลัมน์ที่คุณอาจใช้


ว้าวมันใช้งานได้ขอบคุณ PeterH แต่ปัญหาคือฉันมี 7 คอลัมน์อินพุตแล้วสูตรสุดท้ายจะเป็นอย่างไร
Ravi Bhesadadiya

ดูการอัปเดตเพื่อตอบ @RaviBhesadadiya หากคุณยอมรับว่าเป็นคำตอบที่ถูกต้อง
PeterH

Good one @PeterH สมบูรณ์แบบ 10 ☺
Rajesh S

2

UDF แบบง่ายนี้จะช่วยให้คุณรวมค่าที่ไม่ซ้ำกันในเซลล์คั่นด้วยเครื่องหมายจุลภาค

  • ใส่รหัสนี้เป็นโมดูลด้วยแผ่นงานที่เกี่ยวข้อง

    Function CombineUnique(xRg As Range, xChar As String) As String
    
    Dim xCell As Range
    Dim xDic As Object
    Set xDic = CreateObject("Scripting.Dictionary")
    For Each xCell In xRg
        xDic(xCell.Value) = Empty
    Next
    CombineUnique = Join$(xDic.Keys, xChar)
    Set xDic = Nothing
    End Function  
    

มันทำงานอย่างไร:

  • ก่อนเรียกใช้ UNF นี้เพิ่มMicrosoft Scripting Runtimeโดยใช้เครื่องมืออ้างอิง ในหน้าต่างตัวแก้ไข VB
  • เพื่อให้ได้ผลลัพธ์ที่ต้องการในเซลล์D2เขียน
    สูตรด้านล่างเขียนและกรอกลงไป

    =CombineUnique(A2:C2,",")

หมายเหตุ ปรับการอ้างอิงเซลล์ในสูตรตามต้องการ


คุณกำลังใช้การผูกปลาย ดังนั้นจึงไม่มีเหตุผลที่จะเพิ่มการอ้างอิง Microsoft Scripting Runtime สิ่งนั้นจะต้องใช้ก็ต่อเมื่อคุณใช้การผูก แต่เนิ่นๆ
Ron Rosenfeld

@RonRosenfeld เป็นข้อควรระวังเพื่อเพิ่มบางครั้งฉันพบข้อผิดพลาด ขอบคุณสำหรับคำติชมที่มีค่า ☺
Rajesh S

1

หากคุณมี Office 365 Excel คุณสามารถใช้ TEXTJOIN เป็นสูตรอาร์เรย์ได้

=TEXTJOIN(",",TRUE,IF(COLUMN(A2:C2)=MATCH(A2:C2,A2:C2,0),A2:C2,""))

เป็นสูตรอาร์เรย์ที่ต้องยืนยันด้วย Ctrl-Shift-Enter แทน Enter เมื่อออกจากโหมดแก้ไข

วนซ้ำนี้และทดสอบว่าอินสแตนซ์นั้นเป็นอินสแตนซ์แรกหรือไม่และถ้าเป็นเช่นนั้นมันจะเพิ่มลงในสตริง

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

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