:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

ใช้ VBA ในการค้นหารายการจากSheet 2 มาแสดงใน Sheet3

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Methini
Member
Member
Posts: 12
Joined: Tue Mar 11, 2014 2:52 pm

ใช้ VBA ในการค้นหารายการจากSheet 2 มาแสดงใน Sheet3

#1

Post by Methini »

สวัสดีค่ะ อาจารย์มีเรื่องรบกวนหน่อยค่ะ
ต้องการใช้ VBA ดึงข้อมูลจาก Sheets"M_BOM" มาแสดงใน Sheets3 โดยคีย์คำค้นใน Sheet2 ที่เซลล์ A2 และ B2 ถ้าเงื่อนไขตรงกันให้แสดงรายการออกมาทั้งหมดใน sheet3 หาโค้ดแล้วติดปัญหาตรงที่ว่าใส่โค้ดแล้ว แต่ไม่แสดงรายการออกมาทั้งหมดค่ะ รบกวนอาจารย์ช่วยให้คำแนะนำด้วยค่ะ

ตัวอย่าง
0E010T01 เป็น Parent ซึ่งมี child อีกมากมาย เมื่อคีย์คำค้นใน Sheet2

Parent LOT
OEO10T101 0140

ให้แสดงรายการ child ออกมาทั้งหมดที่เป็นของ 0E010T01 LOT 0140

On Error Resume Next
For Each r In rAll
Parent = Application.VLookup(r, Rng, ColParent, 0)
child = Application.VLookup(r, Rng, Colchild, 0)

If IsError(Parent) Then
MsgBox LookParent & "Not Found"
Else
wk.Range("A2") = Parent
End If
If IsError(child) Then
MsgBox LookLot & "Not Found"
Else
wk.Range("B2") = child
End If

Next r
On Error GoTo 0
Attachments
Book1.xlsm
ไฟล์ตัวอย่าง
(83.88 KiB) Downloaded 34 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ใช้ VBA ในการค้นหารายการจากSheet 2 มาแสดงใน Sheet3

#2

Post by snasui »

:D ช่วยโพสต์ Code ให้แสดงเป้น Code ตาม Link นี้เพื่อสะดวกในการอ่านครับ viewtopic.php?f=3&t=1187

ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Dim rBom As Range, rBomAll As Range
With Sheets("M_BOM")
    Set rBomAll = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
    Sheets("Sheet3").Range("a" & Rows.Count).End(xlUp).Offset(1, 0) _
        = Sheets("Sheet2").Range("a2")
    For Each rBom In rBomAll
        With Sheets("Sheet2")
            If rBom = .Range("a2") And rBom.Offset(0, 2) = .Range("b2") Then
                Sheets("Sheet3").Range("b" & .Rows.Count) _
                    .End(xlUp).Offset(1, 0) = rBom.Offset(0, 1)
            End If
        End With
    Next rBom
End With
Methini
Member
Member
Posts: 12
Joined: Tue Mar 11, 2014 2:52 pm

Re: ใช้ VBA ในการค้นหารายการจากSheet 2 มาแสดงใน Sheet3

#3

Post by Methini »

ขอบคุณค่ะอาจารย์ สำหรับคำแนะนำในการโพสโค้ด และ โค้ดที่อาจารย์ให้มาใช้ได้ดีทีเดียวเลยค่ะ
Methini
Member
Member
Posts: 12
Joined: Tue Mar 11, 2014 2:52 pm

Re: ใช้ VBA ในการค้นหารายการจากSheet 2 มาแสดงใน Sheet3

#4

Post by Methini »

สวัสดีอาจารย์และท่านผู้รู้คะ

ต่อยอดจากชีทที่แล้วคะ ดิฉันอยากทราบว่าถ้าเราต้องการดึงช่วงข้อมูลมาแสดงที่อยู่ระหว่าง LOT 0140 ชีท M_BOM คอลัมน์ "child" ที่อยู่ในช่วงของ LOT 0140 ทั้งหมดควรปรับปรุงหรือใช้ฟังก์ชันใดเพิ่มเติมดีคะ รบกวนอาจารย์และท่านผู้รู้ให้คำแนะนำด้วยคะ
ยกตัวอย่างเช่น 0E010T01 LOT 0140

ที่ชีท M_BOM เซลล์ C:C คือ SLOT หมายถึง START LOT
D:D คือ ELOT หมายถึง END LOT

child SLOT ELOT
A 0011 0139 No
B 0011 9999 Ok
C 0140 0145 Ok
D 0150 0160 No
E 0140 0140 Ok



เงื่อนไข SLOT<=LOT<= ELOT

A 0011 0140 0139 No
D 0150 0140 0160 No
B 0011 0140 0140 OK


Code: Select all

With Sheets("M_BOM")
            Set rBomAll = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
                   Sheets("Sheet3").Range("a" & Rows.Count).End(xlUp).Offset(1, 0) _
                   = Sheets("Sheet2").Range("a2")
    For Each rBom In rBomAll
    With Sheets("Sheet2")
    If rBom = .Range("a2") And rBom.Offset(0, 2) = .Range("b2") Then
    Sheets("Sheet3").Range("b" & .Rows.Count) _
    .End(xlUp).Offset(1, 0) = rBom.Offset(0, 1)
    End If
    End With
    Next rBom
    End With
Attachments
BBB.xlsm
ไฟล์ตัวอย่าง
(92.6 KiB) Downloaded 16 times
Post Reply