Page 1 of 1

รบกวนแนะนำวิธีนับจำนวนคำซ้ำ จากฐานข้อมูลให้ด้วยครับ

Posted: Mon Dec 12, 2016 2:42 pm
by adamjensen
อธิบายเบื้องต้น ผมมีฐานข้อมูลคำศัพท์ภาษาอังกฤษที่ผมบันทึกไว้เวลาอ่านบทความเเล้วไม่ทราบความหมายของคำนั้นๆอยุ่
โดยในฐานข้อมูลนั้นมีคำศัพท์ซ้ำกันอยุ่ ผมต้องการให้โปรแกรมหาว่า คำศัพท์แต่ละคำนั้นซ้ำกันทั้งหมดเท่าไร
เบื้องต้นผมที่ code ที่เอาไว้ใช้ในการหาคำศัพท์ที่ซ้ำกันอยุ่ส่วนหนึ่งแล้ว แต่อยากขอคำแนะนำที่เมื่อโปรแกรมหาคำซ้ำเจอแล้ว ให้โปรแกรมพิมพ์บอกจำนวนต่อท้ายของคำนั้นๆเลย

อธิบายส่วนของ code โปรแกรมจะทำหน้าที่หาคำซ้ำ เเล้วจะเก็บความหมายของคำ ประเภทของคำ และ คำแปลของตามลำดับ (ในที่นี้ก็คือ offset(0,1) offset(0,2) และ offset(0,3) )

Code: Select all

Public Sub update()
 Dim rall As Range, r As Range
    Dim rtargetAll As Range, rtarget As Range
    
    Set rtargetAll = Sheets(2).Range("a:a")
    With Sheets(1)
        Set rall = .Range("c6", .Range("c" & .Rows.Count).End(xlUp))
        For Each r In rall
            If Application.CountIf(rtargetAll, r) = 0 Then
                With Sheets(2).Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
                    .Value = r.Value
                    .Offset(0, 1).Value = r.Offset(0, 1).Value
                    .Offset(0, 2).Value = r.Offset(0, 2).Value
                    .Offset(0, 3).Value = r.Offset(0, 3).Value
                End With
            End If
        Next r
    End With
End Sub

Re: รบกวนแนะนำวิธีนับจำนวนคำซ้ำ จากฐานข้อมูลให้ด้วยครับ

Posted: Mon Dec 12, 2016 8:49 pm
by snasui
:D แนบไฟล์ตัวอย่างพร้อมแสดงตัวอย่างคำตอบมาให้ว่าต้องการคำตอบที่ชีตใด เซลล์ใด ด้วยค่าเท่าใด จะได้ช่วยดูให้ได้ครับ

Re: รบกวนแนะนำวิธีนับจำนวนคำซ้ำ จากฐานข้อมูลให้ด้วยครับ

Posted: Thu Dec 15, 2016 6:14 pm
by adamjensen
ขอบคุณครับอาจารย์ ที่เข้ามาตอบผม

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

คำศัพท์ที่ผมไม่สามารถจดจำได้จะพบซ้ำๆเดิมในฐานข้อมูล(ฐานข้อมูลคำศัพท์ผมจะไม่มีการท่องคำศัพท์ใดๆ
ผมจะใช้ความคุ้นเคย ถ้าคำศัพท์ไหนผมรู้ผมจะไม่บันทึกลงในฐานข้อมูล ส่วนคำศัพท์ที่ผมไม่รู้ หรือไม่คุ้นเคย
ผมจะบันทึกในฐานข้อมูลทันที)

เริ่มจากใน sheet 1 จะเป็นฐานข้อมูลที่ผมไว้บันทึกคำศัพท์ ส่วนที่ highlight สีเหลืองคือคำศัพท์ที่ซ้ำ
ที่ผมต้องการให้โปรแกรมแสดงจำนวนที่ซ้ำใน sheet 2
vocab-1.JPG
ในส่วน sheet 2 จะเป็นส่วนที่ผมเอาไว้จัดเรียงและคัดกรองคำศัพท์ที่
ใน"หัวข้อจำนวนคำซ้ำ" คือส่วนที่ผมต้องการให้นับคำซ้ำที่ผม highlight สีเหลือง
จากตัวอย่างจะเห็นว่า remain, pledge และ generate ซ้ำกันอย่างละ 2 คำ ก็จะมีเลข 2 ต่อท้าย
vocab-2.JPG
ผมตั้งใจอย่างมากที่จะพัฒนาวิธีการท่องศัพท์ภาษาอังกฤษ เพื่อง่ายผู้เรียนสามารถพัฒนาภาษาอังกฤษด้วยความยั่งยืน
ไม่ใช่แค่การท่องเพื่อไปสอบ แต่เป็นการใช้ความคุ้นเคยในชีวิตประจำวันในการพัฒนาภาษาอังกฤษ โปรแกรมของผมผู้เรียน
จะต้องมีความอุตสาหะในการอ่านบทความ ซึ่งก็เหมาะสมแล้ว หากผู้เรียนต้องการพัฒนาทักษะ ผู้เรียนก็ต้องมีความอุตสาหะด้วย
จึงจะประสบความสำเร็จ

Re: รบกวนแนะนำวิธีนับจำนวนคำซ้ำ จากฐานข้อมูลให้ด้วยครับ

Posted: Thu Dec 15, 2016 7:40 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Public Sub update()
    Dim rall As Range, r As Range
    Dim rtargetAll As Range
    With Sheets(1)
        Set rall = .Range("c2", .Range("c" & .Rows.Count).End(xlUp))
    End With
    For Each r In rall
        With Sheets(2)
            If .Range("a2").Value = "" Then
                Set rtargetAll = .Range("a2")
            Else
                Set rtargetAll = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
            End If
        End With
        If Application.CountIf(rall, r.Value) > 1 And Application.CountIf(rtargetAll, r.Value) = 0 Then
            With Sheets(2).Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
                .Value = r.Value
                .Offset(0, 1).Value = r.Offset(0, 1).Value
                .Offset(0, 2).Value = r.Offset(0, 2).Value
                .Offset(0, 3).Value = r.Offset(0, 3).Value
                .Offset(0, 4).Value = Application.CountIf(rall, r.Value)
            End With
        End If
    Next r
End Sub