Page 1 of 1

ต้องการคัดลอกข้อมูลทั้งแถวมาวางไว้ในหัวข้อที่ตรงกันครับ

Posted: Tue Jul 28, 2020 3:18 am
by yodpao.b
ต้องการคัดลอกข้อมูลทั้งแถวมาวางไว้ในหัวข้อที่ตรงกันครับ
1.JPG
จากรูป
ต้องการคัดลอกข้อมูลในแถว N2:U2 ไปไว้ที่ D11:k11
โดยให้ค้นหาหัวข้อในคอลัม C6 ลงมาจนสุด
ผมทำได้แค่คอลัม D คอลัมเดียวครับ ผิด
ผลออกมาดังนี้
2.JPG
code ที่ใช้

Code: Select all

Sub Macro1()

    With Sheets("Sheet2")
        For Each r In .Range("M2")
            .Range("C:C").Find(What:=r.Value, LookAt:=xlWhole).Offset(0, 1).Value = .Range("N2")
        Next
    End With

End Sub

คำตอบที่ถูกต้องดังรูปด้านล่างครับ
3.JPG

Re: ต้องการคัดลอกข้อมูลทั้งแถวมาวางไว้ในหัวข้อที่ตรงกันครับ

Posted: Tue Jul 28, 2020 3:21 am
by yodpao.b
ไฟล์แนบครับ

Re: ต้องการคัดลอกข้อมูลทั้งแถวมาวางไว้ในหัวข้อที่ตรงกันครับ

Posted: Tue Jul 28, 2020 9:21 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

With Sheets("Sheet2")
    .Range("C:C").Find(What:=.Range("m2").Value, _
        LookAt:=xlWhole).Resize(1, 9).Value = .Range("m2:u2").Value
End With

Re: ต้องการคัดลอกข้อมูลทั้งแถวมาวางไว้ในหัวข้อที่ตรงกันครับ

Posted: Tue Jul 28, 2020 12:35 pm
by yodpao.b
ขอแก้เพิ่มอีก ข้อครับ
1.JPG
จากรูป
ในระหว่าง c:c พอดีมีแถวแทรกอยู่ครับ ชึ่งมีตัวแปลเมื่อกัน
ต้องการกำหนดจุดเริ่มต้นถึงจุดสุดท้าย
code
With Sheets("Sheet2")
.Range("C6:C1000").Find(What:=.Range("m2").Value, _
LookAt:=xlWhole).Resize(1, 9).Value = .Range("m2:u2").Value
End With
จุดสิิ้นสุดคือ C1000 สามารถให้มันมองลงไปเรื่อยได้ไหมครับ เพราะข้อมูลจะเพิ่มมาเรื่อย
ผมลองใช้ .Range("C6:C")
ดีบัค ครับ

Re: ต้องการคัดลอกข้อมูลทั้งแถวมาวางไว้ในหัวข้อที่ตรงกันครับ

Posted: Tue Jul 28, 2020 1:18 pm
by snasui
:D คำว่า "ตัวแปร" ที่เป็น Variable สะกดด้วย ร. เรีอ ถ้าเขียนว่า "ตัวแปล" คือ Translator ครับ

จะให้มองไปเรื่อย ๆ โดยไม่ทราบว่าสิ้นสุดตำแหน่งใดก็ใช้ .range("c6:c" & .rows.count) ไปได้เลยครับ

Re: ต้องการคัดลอกข้อมูลทั้งแถวมาวางไว้ในหัวข้อที่ตรงกันครับ

Posted: Tue Jul 28, 2020 1:46 pm
by yodpao.b
ขอบคุณมากครับ
ไฟล์นี้เสร็จแล้วครับ รอเอาไปให้นายแก้ไขเพิ่มเติม

กำลังคิดอยู่ว่าให้เคอร์เซอร์เลื่อนไปหาตำแหน่งที่ต้องการ
ต้องเขียนอย่างไร
เลยเอา code เดิมที่ได้มาแก้ไข ใช้ได้เลยครับ
With Sheets("Sheet2")
.Range("C6:C1000").Find(What:=.Range("m2").Value, _
LookAt:=xlWhole).Select
End With
ขอบคุณครับ