ฟังก์ชัน FIND ใน VBA: ใช้อย่างไร

ต้องการเรียนรู้วิธีการใช้งาน ค้นหาฟังก์ชันใน VBA🇧🇷 ถ้าอย่างนั้นคุณก็มาถูกที่แล้ว!

ใครไม่รู้จักตัวเลือกการค้นหาใน Excel หากคุณใช้งาน Excel มาระยะหนึ่งแล้ว คุณอาจเคยใช้ฟังก์ชัน SEARCH หรือปุ่มลัดยอดนิยม Ctrl + L เพื่อค้นหาคำหรือเนื้อหาที่คุณต้องการค้นหาในเวิร์กชีตทั้งหมดของคุณ เช่นเดียวกับสมุดงานทั้งหมด

นอกจากนี้ ใน VBA เรามีฟังก์ชันที่เรียกว่า FIND ที่สามารถช่วยให้เราค้นหาค่าที่เราต้องการได้

ปฏิบัติตามรายละเอียดด้านล่างเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัตินี้ผ่านตัวอย่างที่ใช้งานได้จริง

ฟังก์ชัน FIND ทำงานอย่างไรใน VBA

ฟังก์ชัน Excel VBA FIND จะค้นหาค่าเฉพาะภายในช่วงที่กำหนด ค้นหาการเกิดขึ้นครั้งแรกของค่านั้น และถ้าพบ ฟังก์ชันจะส่งกลับเซลล์ที่มีค่านั้น อย่างไรก็ตาม หากไม่พบรายการที่ตรงกัน ฟังก์ชันจะไม่คืนค่าใดๆ ฟังก์ชัน VBA FIND สามารถส่งคืนการจับคู่แบบตรงทั้งหมดหรือบางส่วน

ตัวอย่างเช่น รหัสต่อไปนี้ค้นหาข้อความ "นักบุญพอล» ในช่วงเวลา A1: A10 ใน "ใบงาน1🇧🇷

มีชีต("Sheet1").Range("A1:A10")
ตั้ง Rng = .Find(อะไร:="เซาเปาโล")

วัตถุประสงค์ของการใช้ฟังก์ชัน FIND ใน VBA คือการค้นหาค่าที่ต้องการในชุดข้อมูลที่กำหนด ด้วยรหัส VBA คุณสามารถทำงานค้นหาค่าใน Excel ได้โดยอัตโนมัติ

ไวยากรณ์ของฟังก์ชัน VBA FIND

ไวยากรณ์ของฟังก์ชัน VBA FIND มีการประกาศดังนี้:

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

Dónde:

นิพจน์: เป็นวัตถุช่วงซึ่งอยู่ก่อนหน้าฟังก์ชัน FIND ในรหัส VBA ช่วงการค้นหาอาจเป็นแถว คอลัมน์ หรือทั้งสเปรดชีตตั้งแต่หนึ่งแถวขึ้นไป ฟังก์ชัน VBA FIND ยอมรับอาร์กิวเมนต์ต่อไปนี้:

  • Qué: นี่คือคุณค่าที่ควรมองหา อาจเป็นตัวเลข ข้อความ หรือข้อมูลประเภทอื่นๆ ของ Excel อาร์กิวเมนต์นี้เหมือนกับตัวเลือกค้นหาของ "ค้นหาและแทนที่” จากเอ็กเซล
  • แล้ว: ระบุเซลล์ที่จะเริ่มต้นการค้นหา มันถูกป้อนเป็นการอ้างอิงเซลล์เดียว หากไม่ระบุอาร์กิวเมนต์นี้ การค้นหาจะเริ่มต้นหลังจากเซลล์ที่มุมซ้ายบนของช่วงการค้นหาที่ระบุ
  • ดูใน: นี่คือตำแหน่ง (หรือข้อมูล) ที่ควรค้นหาค่า อาจเป็นความคิดเห็น (xlComments) สูตร (xlFormulas) หรือค่า (xlValues) ค่าเริ่มต้นสำหรับอาร์กิวเมนต์นี้คือ xlFormulas นอกจากนี้ อาร์กิวเมนต์นี้เหมือนกับตัวเลือกค้นหาของ "ค้นหาและแทนที่” จากเอ็กเซล
  • ดู: อาร์กิวเมนต์นี้กำหนดว่าจะจับคู่เนื้อหาของเซลล์ทั้งหมด (ตรงกันทุกประการ) หรือเนื้อหาของเซลล์บางส่วน (ตรงกันบางส่วน) ค่าคงที่คือ xlWhole และ xlPart สำหรับการจับคู่แบบตรงทั้งหมดและบางส่วน ตามลำดับ ค่าเริ่มต้นสำหรับอาร์กิวเมนต์นี้คือ xlPart
  • ลำดับการค้นหา: อาร์กิวเมนต์นี้แนะนำลำดับการค้นหา คุณสามารถระบุว่าการค้นหาจะเป็นแถว (xlByRows) หรือคอลัมน์ (xlByColumns) ค่าเริ่มต้นสำหรับอาร์กิวเมนต์นี้คือ xlByRows นอกจากนี้ อาร์กิวเมนต์นี้เหมือนกับตัวเลือกค้นหาของ "ค้นหาและแทนที่” จากเอ็กเซล
  • ค้นหาที่อยู่: ระบุที่อยู่ที่จะทำการค้นหา คุณสามารถค้นหาจากด้านล่างหรือไปยังเซลล์ถัดไปด้วยค่าคงที่ xlNext หรือคุณสามารถค้นหาย้อนหลัง (ขึ้น) หรือในเซลล์ก่อนหน้าด้วยค่าคงที่ xlPrevious ค่าเริ่มต้นสำหรับอาร์กิวเมนต์นี้คือ xlNext
  • กรณีจับคู่: อาร์กิวเมนต์นี้ตัดสินว่าการค้นหาควรคำนึงถึงขนาดตัวพิมพ์หรือไม่ หากการค้นหาคำนึงถึงขนาดตัวพิมพ์ อาร์กิวเมนต์นี้จะถูกระบุเป็นจริง (TRUE) มิฉะนั้นจะเป็นเท็จ (FALSE) ค่าเริ่มต้นสำหรับอาร์กิวเมนต์นี้คือ False
  • MatchByte: ควรใช้อาร์กิวเมนต์นี้หากมีคนติดตั้งหรือเลือกการสนับสนุนภาษาแบบสองไบต์ ต้องระบุเป็นจริงถ้าอักขระแบบไบต์คู่ตรงกับอักขระแบบไบต์คู่ ควรระบุเป็นเท็จหากต้องจับคู่อักขระแบบไบต์คู่กับค่าเทียบเท่าแบบไบต์เดียว
  • รูปแบบการค้นหา: ระบุว่าค่าที่จะค้นหาควรอยู่ในรูปแบบเฉพาะ (เช่น ตัวหนาหรือตัวเอียง) หรือไม่ หากค่าการค้นหาต้องเป็นไปตามเทคนิคการจัดรูปแบบ อาร์กิวเมนต์นี้จะถูกระบุเป็นจริง มิฉะนั้นจะเป็นเท็จ ค่าเริ่มต้นของอาร์กิวเมนต์นี้เป็นเท็จ (FALSE)

เพียงแค่อาร์กิวเมนต์ สิ่งที่ มันจำเป็น. อาร์กิวเมนต์อื่น ๆ เป็นทางเลือก

ฟังก์ชัน FIND ส่งกลับหนึ่งในผลลัพธ์ต่อไปนี้:

  • หากพบค่าที่ตรงกัน ฟังก์ชันจะส่งกลับเซลล์แรกที่พบค่านั้น
  • หากไม่พบรายการที่ตรงกัน ฟังก์ชันจะไม่คืนค่าใดๆ เนื่องจากวัตถุฟังก์ชันถูกตั้งค่าเป็นค่าว่าง

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

หมายเหตุ 1: การค้นหาเริ่มต้นหลังจากเซลล์ที่ระบุในอาร์กิวเมนต์ แล้วก็ และดำเนินการต่อไปยังเซลล์สุดท้ายในช่วงการค้นหา หากไม่พบค่าจนกระทั่งเซลล์สุดท้ายนี้ การค้นหาจะเริ่มต้นอีกครั้งจากเซลล์แรกในช่วงการค้นหาไปยังเซลล์ที่ระบุในอาร์กิวเมนต์ แล้วก็🇧🇷

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

หมายเหตุ 2: ทุกครั้งที่ใช้ฟังก์ชัน VBA FIND ไฟล์ มองเข้าไป🇧🇷 ดูที่🇧🇷 ลำดับการค้นหา y MatchByte จะถูกบันทึก ดังนั้นหากค่าเหล่านี้ถูกละเว้นในครั้งต่อไปที่ใช้ฟังก์ชัน Excel จะใช้ค่าที่บันทึกไว้ก่อนหน้านี้ ดังนั้น ขอแนะนำให้ประกาศอาร์กิวเมนต์ที่ให้ไว้อย่างชัดแจ้ง เมื่อใดก็ตามที่ทำการค้นหาโดยใช้ฟังก์ชัน VBA FIND

จะใช้ฟังก์ชัน FIND ใน Excel VBA ได้อย่างไร?

เพื่อให้คุณเข้าใจการใช้ฟังก์ชัน FIND ใน VBA เราได้แยกตัวอย่างที่ใช้งานได้จริงไว้ด้านล่าง

ตัวอย่างที่ 1: การเลือกเซลล์ที่มีค่าการค้นหาเกิดขึ้นครั้งแรก

ในตัวอย่างแรกนี้ สมมติว่าคุณมีรายการที่มีบางชื่อตามที่แสดงในรูปภาพด้านล่าง และคุณต้องการเรียกดูและเลือกเซลล์ที่มีชื่อนั้น เปโดร🇧🇷

จากนั้นทำตามขั้นตอนเหล่านี้:

1. เข้าถึงคำแนะนำ ผู้พัฒนา 🇧🇷 วิชวลพื้นฐาน🇧🇷 (หากคุณไม่ได้เปิดใช้งานแท็บนักพัฒนาใน Excel ของคุณ ตรวจสอบที่นี่ เป็นขั้นเป็นตอน).

คู่มือนักพัฒนา

ทั้งสอง บนหน้าจอ VBA ให้เลือกแผ่นงานที่ต้องการจากเมนูด้านซ้าย ในตัวอย่างนี้ เราจะเลือก ใบงาน1 ซึ่งเป็นใบงานที่มีรายชื่อ

3. หลังจากเลือกเวิร์กชีตที่ต้องการแล้ว ในพื้นที่ทางด้านขวา ให้ป้อนรหัสด้านล่าง:

เลือกเซลล์ที่มีค่าการค้นหาเกิดขึ้นครั้งแรก

ชื่อตำแหน่งย่อย ()
ช่วง("A1:A10").ค้นหา(อะไร:="ปีเตอร์").เลือก
ย่อยสิ้นสุด
  • โปรดสังเกตในโค้ดด้านบนว่าเราได้กล่าวถึงช่วงที่เราต้องการ (A1: A10🇧🇷
  • หลังจากระบุช่วงแล้ว ให้ใส่จุด (.) แล้วพิมพ์ หา🇧🇷
  • อาร์กิวเมนต์แรกของเราคือสิ่งที่เรากำลังมองหา เพื่อเน้นอาร์กิวเมนต์ เราสามารถส่งอาร์กิวเมนต์ อะไร:=สิ่งนี้จะเป็นประโยชน์ในการระบุว่าเรากำลังอ้างถึงพารามิเตอร์ใด
  • ส่วนสุดท้ายคือหลังจากค้นหาคำที่เราต้องการจะทำ เราต้องเลือกคำ ดังนั้นส่งอาร์กิวเมนต์เป็น เลือก🇧🇷
  • จากนั้นเรียกใช้รหัสนี้โดยใช้รหัส F5 หรือด้วยตนเองตามที่แสดงในภาพด้านล่างเพื่อเลือกเซลล์แรกที่มีชื่อ เปโดร🇧🇷

ค้นหาใน VBA

ตัวอย่างที่ 2: เลือกเซลล์ที่มีค่าการค้นหาเกิดขึ้นเป็นครั้งที่สอง

ในตัวอย่างที่สองนี้ โปรดทราบว่ารูปภาพต่อไปนี้มีชื่อบางชื่อในช่วง A1:A10 โปรดทราบว่าชื่อ "เปโดร” ปรากฏขึ้นสองครั้งในคอลัมน์ A

เลือกเซลล์ที่มีการเกิดขึ้นครั้งที่สอง

ในกรณีนี้ เราต้องการค้นหาและเลือก เกิดขึ้นครั้งที่สอง ของชื่อ “ปีเตอร์” ในคอลัมน์ A (นั่นคือเซลล์ A7) ในการทำเช่นนี้เราจะใช้รหัสต่อไปนี้:

ค้นหาการเกิดขึ้นครั้งที่สองของ VBA

ชื่อตำแหน่งย่อย ()
ช่วง("A1:A10").ค้นหา(อะไร:="ปีเตอร์", หลัง:=ช่วง("A2")).เลือก
ย่อยสิ้นสุด

โปรดสังเกตในโค้ดด้านบนว่าการค้นหาเริ่มต้นหลังจากเซลล์ A2 และดำเนินต่อไปยังเซลล์สุดท้ายในคอลัมน์ A เนื่องจากมีการระบุช่วงการค้นหาเป็นคอลัมน์ A (A1:A10)

ดังนั้น เนื่องจากการค้นหาเริ่มต้นในเซลล์ A3 ค่า “เปโดร” อยู่ในเซลล์ A7 ให้ "สเปรดชีต2🇧🇷 ดังนั้น เซลล์ A7 จะถูกเลือกโดยฟังก์ชัน FIND เมื่อรันโค้ด

ถ้าชื่อ «เปโดรไม่พบ ” ในเซลล์ A3 จนกระทั่งเซลล์สุดท้ายในคอลัมน์ A การค้นหาอีกครั้งจะเริ่มต้นที่เซลล์ A1 และสิ้นสุดที่เซลล์ A2 ในครั้งนี้ ดังนั้น เซลล์ที่ระบุในอาร์กิวเมนต์ “แล้วก็” ถูกค้นหาเมื่อสิ้นสุดกระบวนการค้นหา

ตัวอย่างที่ 3: ค้นหาข้อความโดยระบุอักขระบางตัว

หากต้องการค้นหาข้อความโดยระบุเพียงบางส่วน ให้ป้อนอาร์กิวเมนต์ ดูที่ ในขณะที่ xlส่วน หรือละเว้นอาร์กิวเมนต์นี้ ตามค่าเริ่มต้น ฟังก์ชัน FIND จะจับคู่อักขระในค่าการค้นหากับสตริงทั้งหมด จากนั้นจะส่งกลับเซลล์ที่มีสตริงทั้งหมดนี้

ดูตัวอย่างด้านล่าง:

ชื่อตำแหน่งย่อย ()
ช่วง("A1:A10").ค้นหา(อะไร:="Ped", LookAt:=xlPart).เลือก
ย่อยสิ้นสุด

รหัสนี้ค้นหาอักขระ "เป็ด” ในช่วง A1:A25 ของ “Sheet3” เซลล์ที่มีค่าจะถูกส่งคืน ซึ่งมีชื่อ การติดต่อบางส่วน🇧🇷 ดังนั้น ไม่ว่าอักขระค่าการค้นหาจะอยู่ที่จุดเริ่มต้น ตรงกลาง หรือจุดสิ้นสุดของสตริง Excel VBA จะส่งกลับค่าที่ตรงกัน

สังเกต: ค่าคงที่ xlส่วน สามารถตัดออกจากรหัสได้เนื่องจากเป็นค่าเริ่มต้นของฟังก์ชัน FIND แต่หากมีการระบุอาร์กิวเมนต์นี้ ตรวจสอบให้แน่ใจว่าไม่ได้อยู่ในอัญประกาศคู่

ตัวอย่างที่ 4: การค้นหาข้อความภายในความคิดเห็น

คุณยังสามารถใช้ฟังก์ชัน VBA FIND เพื่อค้นหาข้อความภายในความคิดเห็นของเซลล์ใน Excel

เพื่อความเข้าใจที่ดีขึ้น โปรดดูตัวอย่างด้านล่างซึ่งเรามีเวิร์กชีตที่มีสามเซลล์พร้อมความคิดเห็น (ระบุด้วยสามเหลี่ยมสีแดง) จากนี้เราต้องการค้นหาข้อความ “ค่าคอมมิชชั่นที่จ่าย” อยู่ภายในหนึ่งในความคิดเห็น ในกรณีนี้ เราจะใช้รหัสต่อไปนี้:

ค้นหาตำแหน่งย่อย ()
ช่วง("A1:B10").ค้นหา(อะไร:="ค่าคอมมิชชันที่จ่าย", LookIn:=xlComments).เลือก
ย่อยสิ้นสุด

ค้นหาข้อความภายในความคิดเห็น

ด้วยเหตุนี้ Excel จะเลือกเฉพาะเซลล์ที่มีความคิดเห็นซึ่งมีข้อความระบุไว้ในโค้ดของเรา

ตัวอย่างที่ 5: การจัดการข้อผิดพลาดในฟังก์ชัน FIND ใน VBA

ในกรณีที่ข้อความที่เราต้องการไม่อยู่ในช่วงที่กำหนด VBA จะส่งกลับข้อผิดพลาดที่แสดงด้านล่าง:

91 ข้อผิดพลาด

เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ เราสามารถใช้รหัสที่แสดงด้านล่าง:

ชื่อตำแหน่งย่อย ()
หรี่ผลลัพธ์เป็นตัวแปร

เกี่ยวกับข้อผิดพลาดต่อไป
ช่วง("A1:A10").ค้นหา(อะไร:="Cristina").เลือก
เมื่อเกิดข้อผิดพลาด GoTo 0

ผลลัพธ์ = ActiveCell.Value

ถ้าผลลัพธ์ = "" แล้ว
MsgBox "ค่าที่คุณกำลังมองหาไม่มีอยู่ในช่วงที่กำหนด!"
ออกจาก Sub
End If

ย่อยสิ้นสุด

สังเกตในโค้ดด้านบนว่าถ้า VBA พบค่า จะแสดงค่าที่พบ หรือมิฉะนั้นจะแสดงข้อความเป็น "ค่าที่คุณต้องการไม่มีอยู่ในช่วงที่กำหนด🇧🇷

สำหรับเคล็ดลับเพิ่มเติมเกี่ยวกับวิธีแก้ไขข้อผิดพลาด VBA โปรดดูบทความ: ข้อผิดพลาด Excel VBA: ทุกสิ่งที่คุณต้องรู้!

รายละเอียดที่ต้องจำ

  • ฟังก์ชัน FIND เป็นส่วนหนึ่งของคุณสมบัติ RANGE และคุณควรใช้ FIND หลังจากเลือกเฉพาะช่วง
  • ในฟังก์ชัน FIND อาร์กิวเมนต์แรก (สิ่งที่) และอย่างอื่นทั้งหมดเป็นตัวเลือก
  • หากคุณพบค่าหลังจากเซลล์ใดเซลล์หนึ่ง คุณสามารถระบุเซลล์นั้นในพารามิเตอร์ได้ แล้วก็ ของไวยากรณ์การค้นหา

ดาวน์โหลดสเปรดชีตที่นี่ มีตัวอย่างที่นำเสนอในบทช่วยสอนนี้

ตรวจสอบเคล็ดลับ Excel ต่อไปนี้ด้วย:

คุณคิดอย่างไรกับฟังก์ชัน FIND ใน VBA หากคุณมีคำถามใด ๆ โปรดแสดงความคิดเห็นของคุณด้านล่าง ตรวจสอบเคล็ดลับ Excel และ VBA เพิ่มเติมบนเว็บไซต์ของเรา!

ทอมมี่ แบงค์ส
เรายินดีที่จะได้ยินสิ่งที่คุณคิด

ทิ้งคำตอบไว้

TechnoBreak | ข้อเสนอและคำวิจารณ์
โลโก้
เปิดใช้งานการลงทะเบียนในการตั้งค่า - ทั่วไป
ตะกร้าช้อปปิ้ง