Page 1 of 1

เทียบข้อมูลซ้ำ หาตัวซ้ำในโจทย์ และแสดงตัวซ้ำตัวเดียว

Posted: Fri Jan 20, 2012 10:20 am
by Plan800
ผมกำลังหัดเขียน VB โดยใช้ Array ในการเทียบข้อมูลซ้ำตามตัวอย่าง อยากจะหาตัวซ้ำในโจทย์ และแสดงออกมาตัวที่ซ้ำตัวเดียว เพื่อนผมบอกว่าให้เขียนวนลูปอีกชุด แต่พอผมศึกษา Array พบว่าเขียน Array 2 มิติ เทียบข้อมูลได้ แต่ผมเขียนลูปไม่ได้ ขอบพระคุณอย่างสูงครับ

Re: เทียบข้อมูลซ้ำ หาตัวซ้ำในโจทย์ และแสดงตัวซ้ำตัวเดียว

Posted: Fri Jan 20, 2012 11:05 am
by snasui
:D จากตัวอย่างที่ให้มาลองดูตัวอย่าง Code ตามด้านล่างเพื่อจะ List ว่ามีค่าใดซ้ำกันบ้างครับ

Code: Select all

Sub ListDup()
    Dim rAll As Range
    Dim r As Range
    Dim rTarget As Range
    With Sheets("Sheet1")
        .Range("H2", .Range("H2").End(xlDown)).ClearContents
        Set rAll = .Range("G2", .Range("G" & Rows.Count).End(xlUp))
        Set rTarget = .Range("H2", .Range("H" & Rows.Count).End(xlUp))
        For Each r In rAll
            If Application.CountIf(rAll, r) > 1 And Application.CountIf(rTarget, r) = 0 Then
                .Range("H" & Rows.Count).End(xlUp).Offset(1, 0) = r
                Set rTarget = .Range("H2", .Range("H" & Rows.Count).End(xlUp))
            End If
        Next r
    End With
End Sub

Re: เทียบข้อมูลซ้ำ หาตัวซ้ำในโจทย์ และแสดงตัวซ้ำตัวเดียว

Posted: Fri Jan 20, 2012 11:15 am
by bank9597
:D สุดยอดครับ

Re: เทียบข้อมูลซ้ำ หาตัวซ้ำในโจทย์ และแสดงตัวซ้ำตัวเดียว

Posted: Fri Jan 20, 2012 11:31 am
by Plan800
ขอบพระคุณครับ อาจารย์ สุดยอดจริงๆ

Re: เทียบข้อมูลซ้ำ หาตัวซ้ำในโจทย์ และแสดงตัวซ้ำตัวเดียว

Posted: Fri Jan 20, 2012 12:43 pm
by norkaz
แถมครับ

กรณีใช้สูตร

1.ที่ H2 คีย์
=IFERROR(INDEX($G$1:$G$16,SMALL(IF(IFERROR(MATCH($G$2:$G$16,$G$2:$G$16,0),"")<>ROW($G$2:$G$16)-ROW($G$2)+1,ROW($G$2:$G$16)),ROW(G1))),"")

2.กดเป็น Array (กด Ctrl + Shift ค้างไว้ จากนั้นกด Enter เข้ากล Array)

3.Copy สูตรลงล่าง

Norkaz