Excel VBA การใช้ vlookup ข้าม Sheet

โดยปกติ ถ้าเราใช้สูตร Vlookup ก็สามารถข้าม Sheet ได้ โดยการอ้างอิง ชื่อ Sheet!ข้อมูล แต่ถ้าจะใช้ VBA มีหลักการ ดังนี้

  1. ใช้สูตร FormulaR1C1 แทนการใช้ WorksheetFunction เพื่อให้สะดวก ในการเปลี่ยนตำแหน่งเซลล์ สำหรับ lookup_value
  2. ให้ Excel หาจำนวนข้อมูล เพื่อการกำหนดขอบเขต 
ตัวอย่าง
ในตัวอย่างต่อไปนี้ จะสร้างปุ่ม เพื่อเรียกข้อมูลจากอีก Sheet มาวางไว้ในตำแหน่งที่ต้องการ
วิธีการ
  1. เปิดโปรแกรม Excel ที่ Sheet1  พิมพ์ข้อมูล และสร้างปุ่ม ดังภาพ
  2. ที่ Shhet2 พิมพ์ข้อมูล ดังภาพ
  3. เขียน VBA code ที่ปุ่ม ดังนี้
    Sub Button1_Click()
       Dim lLastRow As Long
       
       With Sheets("Sheet1")
          lLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
          With .Range("B2:B" & lLastRow)
            .FormulaR1C1 = "=Vlookup(RC1,'Sheet2'!R1C4:R5C5,2,FALSE)"
          End With
       End With
    
    End Sub
    
    
    หมายเหตุ
    ค่า RC1 จะเปลี่ยนไปตามการวนรอบ เช่น เป็น R2C1, R3C1, R4C1 ...  เป็นต้น ซึ่งจะทำให้ค่า ที่นำมาเป็นเงื่อนไขการค้นหา หรือ lookup_value เปลี่ยนไปโดยอัตโนมัติ

  4. เมื่อคลิกปุ่ม ข้อมูลจาก Sheet2 จะมาปรากฏที่ Sheet1 ดังภาพ
ดาวน์โหลดไฟล์ตัวอย่าง คลิกที่นี่

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

อุปมา อุปไมย สำนวนการเปรียบเทียบ ของไทย

แนวข้อสอบ เงื่อนไขสัญลักษณ์

ความสามารถทั่วไปด้านเหตุผล การหาความสัมพันธ์จาก ภาพ สัญลักษณ์