Page 1 of 1
สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ
Posted: Wed Jan 04, 2023 3:41 pm
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 ที่ต้องการก๊อปปี้ไปวางก็มีมากกว่านี้ครับ แต่ยกตัวอย่างมาแค่สองเงื่อนไขและสองคอลัมน์ครับ
Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ
Posted: Wed Jan 04, 2023 4:18 pm
by snasui

กรุณาแนบไฟล์ตัวอย่างซึ่งได้แนบ Code นี้เอาไว้แล้วมาด้วยจะได้สะดวกในการตอบของเพื่อนสมาชิกครับ
Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ
Posted: Wed Jan 04, 2023 4:55 pm
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
Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ
Posted: Wed Jan 04, 2023 7:24 pm
by snasui

ตัวอย่างการปรับ 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
Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ
Posted: Thu Jan 05, 2023 8:34 am
by klot5678
ตัวแปร rngSr และ rngTg ต้องกำหนดค่าไหมครับ พอดีลองนำมาปรับแล้วค่อนข้างงง
Re: สอบถามแนวทางการใช้VBA copyค่าจากชีทอื่นตามเงื่อนไขครับ
Posted: Thu Jan 05, 2023 8:39 am
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