Vba: วิธีค้นหาค่าในคอลัมน์ (พร้อมตัวอย่าง)
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้ใน VBA เพื่อค้นหาค่าในคอลัมน์ใน Excel:
Sub FindValue()
Dim rng As Range
Dim cell As Range
Dim findString As String
'specify range to look in
Set rng = ActiveSheet.Columns(" A:A ")
'specify string to look for
findString = " Rockets "
'find cell with string
Set cell = rng.Find(What:=findString, LookIn:=xlFormulas, _
LookAt:=xlWhole, MatchCase:=False)
If cell Is Nothing Then
cell.Font.Color = vbBlack
Else
cell.Font.Color = vbRed
cell.Font.Bold = True
End If
End Sub
มาโครนี้จะค้นหาทั้งคอลัมน์ A ของแผ่นงานที่ใช้งานอยู่ในปัจจุบันเพื่อหาสตริง “Rockets” และหากพบ ให้เปลี่ยนสีแบบอักษรของเซลล์เป็นสีแดง และทำให้แบบอักษรเป็นตัวหนา
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: วิธีค้นหาค่าในคอลัมน์โดยใช้ VBA
สมมติว่าเรามีชุดข้อมูลต่อไปนี้ที่มีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
สมมติว่าเราต้องการค้นหาชื่อทีม “Rockets” ในคอลัมน์ A และเมื่อพบแล้ว ให้แปลงสีแบบอักษรของเซลล์เป็นสีแดงและทำให้แบบอักษรเป็นตัวหนา
เราสามารถสร้างมาโครต่อไปนี้เพื่อทำสิ่งนี้:
Sub FindValues()
Dim rng As Range
Dim cell As Range
Dim findString As String
'specify range to look in
Set rng = ActiveSheet.Columns(" A:A ")
'specify string to look for
findString = " Rockets "
'find cell with string
Set cell = rng.Find(What:=findString, LookIn:=xlFormulas, _
LookAt:=xlWhole, MatchCase:=False)
If cell Is Nothing Then
cell.Font.Color = vbBlack
Else
cell.Font.Color = vbRed
cell.Font.Bold = True
End If
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
โปรดสังเกตว่าแบบอักษรในเซลล์ที่มีสตริง “Rockets” เปลี่ยนเป็นสีแดงและเป็นตัวหนา
เซลล์อื่นๆ ทั้งหมดจะเก็บแบบอักษรสีดำไว้
โปรดทราบว่าอาร์กิวเมนต์ MatchCase:=False ในโค้ดบอกให้ VBA ทำการค้นหาโดยคำนึงถึงขนาดตัวพิมพ์
ดังนั้นหากชื่อทีมในคอลัมน์ A คือ “rockets” มาโครจะค้นหาสตริงนั้นเสมอและทำให้แบบอักษรเป็นสีแดงและตัวหนา
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:
VBA: วิธีเขียนฟังก์ชัน AVERAGEIF และ AVERAGEIFS
VBA: วิธีเขียนฟังก์ชัน SUMIF และ SUMIFS
VBA: วิธีเขียนฟังก์ชัน COUNTIF และ COUNTIFS