: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 copyค่าจากชีทอื่นตามเงื่อนไขครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
klot5678
Member
Member
Posts: 6
Joined: Wed Jan 04, 2023 3:04 pm
Excel Ver: 2016

สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ

#1

Post by klot5678 »

สวัสดีครับ ต้องการ ก๊อปปี้ค่าจาก sheet3 มาวางที่ sheet1 แบบหลายเงื่อนไขครับ
- สิ่งที่ต้องการคือ copy column O จาก Sheet3 มาวางที่ column AL ของ Sheet1 และ copy column F จาก Sheet3 มาวางที่ column AP ของ Sheet1 ถ้าเข้าเงื่อนไขครับ
- เงื่อนไขคือ column H ของ Sheet1 ต้อง = column J ของ Sheet3 และ column G ของ Sheet1 ต้อง = column K ของ Sheet3 ครับ

Code: Select all

Sub mc()
    Dim i As Long
    Dim j As Long
    
    j = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
    
    For i = 3 To j
        If Sheet1.Cells(i, "H") = Sheet3.Cells(i, "J") And Sheet1.Cells(i, "G") = Sheet3.Cells(i, "K") Then
            Sheet3.Cells(i, "O").Copy Destiantion:=Sheet1.Cells(i, "AL")
            Sheet3.Cells(i, "F").Copy Destiantion:=Sheet1.Cells(i, "AP")
            
        End If
    Next
    
End Sub 
จากที่ไปทดลองเขียนโค้ดดูปัญหาคือกดรันมาโครแล้วไม่เกิดอะไรขึ้นครับ จึงรบกวนของแนวทางการเขียนมาโครในการก๊อปปี้ค่าแบบหลายเงื่อนไขครับ ขอบคุณครับ
ปล.เงื่อนไขจริงมีมากกว่านี้ครับ และจำนวน column ที่ต้องการก๊อปปี้ไปวางก็มีมากกว่านี้ครับ แต่ยกตัวอย่างมาแค่สองเงื่อนไขและสองคอลัมน์ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31153
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ

#2

Post by snasui »

:D กรุณาแนบไฟล์ตัวอย่างซึ่งได้แนบ Code นี้เอาไว้แล้วมาด้วยจะได้สะดวกในการตอบของเพื่อนสมาชิกครับ
klot5678
Member
Member
Posts: 6
Joined: Wed Jan 04, 2023 3:04 pm
Excel Ver: 2016

Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ

#3

Post by klot5678 »

พอดีไปจำลองไฟล์ข้อมูลแล้วปรับโค้ดดูบางส่วน ดังไฟล์แนบครับ แต่เกิด runtime error '424'

Code: Select all

Sub testmc()
    Dim i As Long
    Dim j As Long
    
    j = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
    
    For i = 1 To j
        If Sheet3.Cells(i, "J") = Sheet1.Cells(i, "H") And Sheet3.Cells(i, "K") = Sheet1.Cells(i, "G") Then
            Sheet3.Cells(i, "O").Copy Destiantion:=Sheet1.Cells(i, "AL")
            Sheet3.Cells(i, "F").Copy Destiantion:=Sheet1.Cells(i, "AP")
            
        End If
    Next
    
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31153
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ

#4

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub testmc()
'    Dim i As Long
'    Dim j As Long
'
'    j = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
'
'    For i = 1 To j
'        If Sheet3.Cells(i, "J") = Sheet1.Cells(i, "H") And _
'            Sheet3.Cells(i, "K") = Sheet1.Cells(i, "G") Then
'            Sheet3.Cells(i, "O").Copy Destiantion:=Sheet1.Cells(i, "AL")
'            Sheet3.Cells(i, "F").Copy Destiantion:=Sheet1.Cells(i, "AP")
'        End If
'    Next
    Dim srAll As Range, rngSr As Range
    Dim tgAll As Range, rngTg As Range
    With Worksheets("Sheet3")
        Set srAll = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
    End With
    With Worksheets("Sheet1")
        Set tgAll = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
    End With
    
    For Each rngSr In srAll
        For Each rngTg In tgAll
            If rngSr.Parent.Cells(rngSr.Row, "j").Value = _
                    rngTg.Parent.Cells(rngTg.Row, "g").Value And _
                rngSr.Parent.Cells(rngSr.Row, "k").Value = _
                    rngTg.Parent.Cells(rngTg.Row, "h").Value Then
                rngTg.Parent.Cells(rngTg.Row, "al").Value = _
                    rngSr.Parent.Cells(rngSr.Row, "f").Value
                rngTg.Parent.Cells(rngTg.Row, "ap").Value = _
                    rngSr.Parent.Cells(rngSr.Row, "o").Value
            End If
        Next rngTg
    Next rngSr
End Sub
klot5678
Member
Member
Posts: 6
Joined: Wed Jan 04, 2023 3:04 pm
Excel Ver: 2016

Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ

#5

Post by klot5678 »

ตัวแปร rngSr และ rngTg ต้องกำหนดค่าไหมครับ พอดีลองนำมาปรับแล้วค่อนข้างงง
klot5678
Member
Member
Posts: 6
Joined: Wed Jan 04, 2023 3:04 pm
Excel Ver: 2016

Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ

#6

Post by klot5678 »

ได้ผลลัพธ์แล้วครับ ลองสลับเงื่อนไขนิดหน่อย ขอบคุณมากครับ

Code: Select all

    Dim srAll As Range, rngSr As Range
    Dim tgAll As Range, rngTg As Range
    With Worksheets("Sheet3")
        Set srAll = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
    End With
    With Worksheets("Sheet1")
        Set tgAll = .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
    End With
    
    For Each rngSr In srAll
        For Each rngTg In tgAll
            If rngSr.Parent.Cells(rngSr.Row, "k").Value = _
                    rngTg.Parent.Cells(rngTg.Row, "g").Value And _
                rngSr.Parent.Cells(rngSr.Row, "j").Value = _
                    rngTg.Parent.Cells(rngTg.Row, "h").Value Then
                rngTg.Parent.Cells(rngTg.Row, "al").Value = _
                    rngSr.Parent.Cells(rngSr.Row, "f").Value
                rngTg.Parent.Cells(rngTg.Row, "ap").Value = _
                    rngSr.Parent.Cells(rngSr.Row, "o").Value
            End If
        Next rngTg
    Next rngSr
End Sub
You do not have the required permissions to view the files attached to this post.
Post Reply