: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

การดึงค่าข้าม Sheet

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sanorte9
Member
Member
Posts: 5
Joined: Sun Mar 04, 2012 1:32 am

การดึงค่าข้าม Sheet

#1

Post by sanorte9 »

ก่อนผมจะถามผมได้พยายามลองทำดูนานมากแต่ไม่ได้ โดยใช้ Do While ไม่รู้ว่านำมาใช้ผิดประเภทหรือปล่าว

ผมมี Sheet อยู่ 2 Sheet
1. Program
pro.jpg
2. ProductDB
db.jpg
สิ่งที่ผมต้องการคือ ใส่ค่าลงในช่อง รหัส ที่ Program แล้วเมื่อกดปุ่ม ตรวจสอบ ให้ทำการเปรียบเทียบกับ ProductDB
- ถ้ารหัสที่ใส่ใน Program มีอยู่ใน ProductDB ให้เขียน รายการ และ ราคา จาก ProductDB ลงใน Program
- ถ้ารหัสที่ใส่ใน Program ไม่มีอยู่ใน ProductDB ให้แสดง MsgBox ว่า ไม่พบxxx ปล.xxx คือข้อความที่เขียนลงไปแล้วไม่พบ
- ไม่ต้องใสรหัสให้ครบทุกช่องใน Program (เปรียบเทียบเฉพาะช่องที่มีการป้อน)
- รหัสที่ใส่ใน Program ไม่ต้องเรียงตาม ProductDB เช่น ใส่ A001,A007,A005

นอกจากเงื่อนไขดังกล่าวแล้วผมอยากทราบอีก 2 กรณี คือ
1.กรณีป้อนรหัสลงใน Program โดยห้ามเว้นช่องลำดับ เช่น ป้อนรหัส ในลำดับ 1,2,3,4,5,6 และถ้ามีการเว้น ให้แสดง MsgBox ว่า ลำดับxxผิดพลาด ปล.xx คือลำดับที่มีการเว้นว่าและข้ามไปทำลำดับอื่น
2.กรณีป้อนรหัสลงใน Program โดยเว้นช่องลำดับได้ เช่น ป้อนรหัส ในลำดับ 1,4,5,7

ขอขอบคุณล่วงหน้าครับ ผมน้องใหม่จริงๆ รบกวนด้วยครับผม
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31178
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงค่าข้าม Sheet

#2

Post by snasui »

:D กรณีเป็น VBA จำเป็นต้องเขียนมาก่อนครับ ที่บอกว่าไม่ได้นั้นได้เขียนไว้แล้วอย่างไร ส่งไฟล์และ Code นั้นมาด้วยครับจะได้ช่วยกันดูได้
sanorte9
Member
Member
Posts: 5
Joined: Sun Mar 04, 2012 1:32 am

Re: การดึงค่าข้าม Sheet

#3

Post by sanorte9 »

ผมทำได้ประมาณนี้ ซึ่งยังมีอีกหลายประการที่ไม่เข้าท่า
ทำได้ตอนนี้คือ
-ตรวจสอบได้แต่ต้องใส่ตามลำดับตาม ProductDB

ไม่ทราบว่าจะทำอย่างไรให้ที่ Program รหัส 1 ช่อง วิ่งตรวจที่ ProductDB 1ครั้ง
ยังไงรบกวนด้วย

Code: Select all

Private Sub CommandButton1_Click()
Dim iRow As Integer
Dim jRow As Integer
iRow = 4
jRow = 5
Do While Worksheets("Program").Range("C" & jRow).Value <> ""
If Worksheets("ProductDB").Range("D" & iRow).Value = Worksheets("Program").Range("C" & jRow).Value Then
Worksheets("Program").Range("D" & jRow).Value = Worksheets("ProductDB").Range("E" & iRow).Value
Worksheets("Program").Range("E" & jRow).Value = Worksheets("ProductDB").Range("F" & iRow).Value
End If
iRow = iRow + 1
jRow = jRow + 1
Loop
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31178
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงค่าข้าม Sheet

#4

Post by snasui »

:lol: ช่วยส่งไฟล์ตัวอย่าง แนบ Code มาให้ด้วยครับ ผมและเพื่อน ๆ จะได้ไม่ต้องเสียเวลาทำตัวอย่างขึ้นมาเลียนแบบ
snasui wrote: :D กรณีเป็น VBA จำเป็นต้องเขียนมาก่อนครับ ที่บอกว่าไม่ได้นั้นได้เขียนไว้แล้วอย่างไร ส่งไฟล์และ Code นั้นมาด้วยครับจะได้ช่วยกันดูได้
sanorte9
Member
Member
Posts: 5
Joined: Sun Mar 04, 2012 1:32 am

Re: การดึงค่าข้าม Sheet

#5

Post by sanorte9 »

นี่ครับ
Book1.xlsm
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31178
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงค่าข้าม Sheet

#6

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
'    Dim iRow As Integer
'    Dim jRow As Integer
'    iRow = 4
'    jRow = 5
'    Do While Worksheets("ProductDB").Range("B" & iRow).Value <> ""
'        If Worksheets("ProductDB").Range("C" & iRow).Value = Worksheets("Program").Range("C & jRow").Value Then
'            Worksheets("Program").Range("D" & jRow).Value = Worksheets("ProductDB").Range("D" & iRow).Value
'            Worksheets("Program").Range("E" & jRow).Value = Worksheets("ProductDB").Range("E" & iRow).Value
'            Exit Sub
'        End If
'        iRow = iRow + 1
'    Loop
    Dim rSource As Range
    Dim rs As Range
    Dim rTarget As Range
    Dim rt As Range
    Dim lng As Long
    With Sheets("ProductDB")
        Set rSource = .Range("C4", .Range("C" & Rows.Count) _
            .End(xlUp))
    End With
    With Sheets("Program")
        Set rTarget = .Range("C5", .Range("C" & Rows.Count) _
            .End(xlUp))
    End With
    For Each rt In rTarget
        For Each rs In rSource
            If rs = rt Then
                rt.Offset(0, 1) = rs.Offset(0, 1)
                rt.Offset(0, 2) = rs.Offset(0, 2)
                lng = lng + 1
            End If
        Next rs
    Next rt
    If lng = 0 Then
        MsgBox "ไม่พบรหัสสินค้าที่กำหนด", vbOKOnly
    End If
End Sub
sanorte9
Member
Member
Posts: 5
Joined: Sun Mar 04, 2012 1:32 am

Re: การดึงค่าข้าม Sheet

#7

Post by sanorte9 »

ขอบคุณครับ จะลองนำ Code ไปศึกษาดู

แล้วกรณี รหัสที่ใส่ไปมันผิด เราสามารถแสดงใน MsgBox ได้ไหมว่าที่ผิดคือ รหัสนั้นๆ

เช่นใส่ไปว่า A100 แล้วกดปุ่ม จากนั้นพบว่าไม่มี A100 ใน ProductDB แล้วให้โช MsgBox ไม่พบ A100

ขอบคุณล่วงหน้าครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31178
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การดึงค่าข้าม Sheet

#8

Post by snasui »

:D ลองปรับ Code มาดูก่อนครับ ติดตรงไหนสามารถถามกันได้เรื่อย ๆ ครับ
Post Reply