## บทความ: การใช้งาน Sequential Search ในภาษา VBA สำหรับการค้นหาข้อมูล
การค้นหาข้อมูลเป็นหนึ่งในกิจกรรมพื้นฐานที่เราพบเห็นได้ทุกวันในโลกการเขียนโปรแกรม ไม่ว่าจะเป็นการค้นหาสินค้าในร้านค้าออนไลน์ การค้นหาข้อมูลในฐานข้อมูล หรือแม้กระทั่งการค้นหาเพื่อนในโซเชียลมีเดีย วันนี้เราจะมาเรียนรู้เกี่ยวกับ `Sequential Search` คืออะไร พร้อมตัวอย่างโค้ด 3 ตัวอย่างในภาษา VBA และอธิบายการทำงาน รวมถึงอภิปราย use-case ในโลกแห่งความจริง
`Sequential Search` หรือการค้นหาแบบต่อเนื่องคือการวิธีการค้นหาที่ง่ายที่สุด ซึ่งทำการค้นหาข้อมูลโดยการเริ่มจากต้นข้อมูลไปเรื่อยๆจนถึงท้ายข้อมูล เหมาะสำหรับข้อมูลที่ไม่ได้ถูกเรียงลำดับมาก่อน
สมมติเรามีข้อมูลของนักเรียนคนหนึ่งกำลังค้นหาคะแนนของตัวเองในลิสต์ของคะแนนที่เรียงลำดับไม่เป็น.
Function SequentialSearch(data As Variant, key As Variant) As Integer
Dim i As Integer
For i = LBound(data) To UBound(data)
If data(i) = key Then
SequentialSearch = i
Exit Function
End If
Next i
SequentialSearch = -1 'ไม่พบข้อมูล
End Function
ในโค้ดข้างต้นเราประกาศฟังก์ชัน `SequentialSearch` ที่รับพารามิเตอร์สองตัว คือ `data` ข้อมูลที่ต้องการค้นหาและ `key` คีย์ที่ต้องการจะหา ฟังก์ชันนี้จะวนลูปตามข้อมูลทั้งหมดและมันจะคืนค่าตำแหน่งที่พบคีย์ที่ต้องการหรือคืนค่า -1 หากไม่พบ
ลองดูตัวอย่างการใช้งาน `SequentialSearch` กับ Array ของคะแนนที่ไม่ได้เรียงลำดับ
Sub ExampleSequentialSearch()
Dim scores(1 To 5) As Variant
scores(1) = 85
scores(2) = 93
scores(3) = 67
scores(4) = 95
scores(5) = 78
Dim myScore As Variant
myScore = 93
Dim result As Integer
result = SequentialSearch(scores, myScore)
If result = -1 Then
MsgBox "ไม่พบคะแนนในลิสต์"
Else
MsgBox "พบคะแนนที่ตำแหน่ง: " & result
End If
End Sub
โค้ดข้างต้นจะแสดงกล่องข้อความที่บอกตำแหน่งของค่า `myScore` ในอาร์เรย์ `scores` ในกรณีนี้คือที่ตำแหน่ง 2.
VBA มักใช้กับ Microsoft Excel ลองดูการใช้งาน Sequential Search กับข้อมูลใน Worksheet.
Sub SearchInWorksheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Scores")
Dim searchRange As Range
Set searchRange = ws.Range("A1:A10") ' ขอบเขตของข้อมูลคะแนน
Dim key As Variant
key = InputBox("กรอกคะแนนที่ต้องการหา:")
Dim c As Range
For Each c In searchRange
If c.Value = key Then
MsgBox "พบคะแนนที่เซลล์: " & c.Address
Exit Sub
End If
Next c
MsgBox "ไม่พบคะแนนในลิสต์"
End Sub
โค้ดนี้จะทำการค้นหาในช่วงของเซลล์ที่กำหนดและแจ้งผลลัพธ์ผ่านกล่องข้อความ.
Sequential Search เหมาะสมที่จะใช้กับคอลเลคชันข้อมูลที่มีขนาดเล็กหรือสถานการณ์ที่ข้อมูลไม่สามารถสร้างดัชนีได้ ดังตัวอย่างด้านล่าง:
- การค้นหารายชื่อพนักงานในฐานข้อมูลขนาดเล็ก
- ช่วยหาหมายเลขโทรศัพท์ในสมุดโทรศัพท์ที่ไม่ได้เรียงลำดับ
- การค้นหาสินค้าในรายการสินค้าที่คลังสินค้าที่มีขนาดไม่ใหญ่มาก
Sequential Search เป็นการค้นหาที่มีการใช้งานที่แสนจะง่ายและตรงไปตรงมา แต่มีข้อเสียคือมันอาจใช้เวลานานเมื่อข้อมูลมีขนาดใหญ่ เพราะต้องทำการเปรียบเทียบทุกรายการจนกระทั่งพบข้อมูลที่ต้องการ
เชิญทุกท่านที่สนใจในการเขียนโปรแกรม เรียนรู้การค้นหาข้อมูลและอื่นๆ ให้ลองเข้ามาเรียนรู้ที่ EPT (Expert-Programming-Tutor) เรามีหลักสูตรและโปรแกรมการสอนที่จะพาทุกท่านสู่โลกแห่งการเขียนโค้ดที่น่าตื่นเต้นและมีคุณภาพ!
สุดท้ายนี้ การฝึกฝนและการลงมือทำเป็นวิธีการเรียนรู้ที่ดีที่สุด และ EPT ยินดีเป็นเพื่อนร่วมทางในการเรียนรู้และสร้างสรรค์โค้ดที่มีประสิทธิภาพกับทุกท่าน!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: sequential_search vba programming search_algorithm array excel worksheet use-case data_search programming_tutorial coding data_analysis algorithm microsoft_excel programming_logic
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM