Page 1 of 1

VBA update ข้อมูลหลายบรรทัด

Posted: Mon Nov 04, 2019 4:09 am
by yodpao.b
VBA update ข้อมูลหลายบรรทัด
ต้องการ update ข้อมูลในตารางสีเทา
ไปไว้ใน page " data_Approvebudget"
โดยอ้างอิงจากหัวคอลัมทั้ง 2 หน้า
ขั้นตอน
1คลิก
2.JPG
2.JPG (19.17 KiB) Viewed 56 times
2update ข้อมูล
0.JPG
0.JPG (21.69 KiB) Viewed 56 times
3มาไว้หน้านี้
2.JPG
2.JPG (19.17 KiB) Viewed 56 times

Re: VBA update ข้อมูลหลายบรรทัด

Posted: Mon Nov 04, 2019 4:35 am
by yodpao.b
จาก code ทำงานได้ บรรทัดเดียว

Code: Select all

Sub MacroUndate()


Dim FillCodeRange As Range
Dim CodeRange As Range
Dim i As Integer

Set CodeRange = Worksheets("data_Approvebudget").Range("E:E")
Set FillCodeRange = Worksheets("Approve_budget").Range("C39")

    With Application.WorksheetFunction
         i = .Match(FillCodeRange, CodeRange, 0)
    End With
    With Sheets("data_Approvebudget")
        .Range("E" & i).Resize(1, 58).Value = Sheets("Approve_budget").Range("C39:BG39").Value
    End With
    
End Sub

Re: VBA update ข้อมูลหลายบรรทัด

Posted: Mon Nov 04, 2019 8:14 pm
by snasui
:D การทำงานลักษณะนี้ต้อง Loop แต่ละค่าเข้าไปตรวจสอบว่าอยู่ในบรรทัดไหนแล้วค่อยนำค่าต้นทางไปวางปลายทาง

จำเป็นต้องฝึกการ Loop ให้เป็นไม่เช่นนั้นจะใช้ VBA ได้อย่างจำกัดครับ

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

Code: Select all

Dim rAll As Range, r As Range

Set CodeRange = Worksheets("data_Approvebudget").Range("E:E")
With Worksheets("Approve_budget")
    Set rAll = .Range("c39", .Range("c" & .Rows.Count).End(xlUp))
End With
Set FillCodeRange = Worksheets("Approve_budget").Range("C39")
For Each r In rAll
    With Application.WorksheetFunction
         i = .Match(r.Value, CodeRange, 0)
    End With
    With Sheets("data_Approvebudget")
        .Range("E" & i).Resize(1, 57).Value = r.Resize(1, 57).Value
    End With
Next r

Re: VBA update ข้อมูลหลายบรรทัด

Posted: Mon Nov 04, 2019 11:42 pm
by yodpao.b
code นี้ไว้ไปทำที่ทำงานครับ

Re: VBA update ข้อมูลหลายบรรทัด

Posted: Tue Nov 05, 2019 9:03 pm
by yodpao.b
ขอบคุณมากครับ
จากนี้คงไม่มีไฟล์นี้คงไม่มีอะไรแล้ว
ที่เหลือก็เป็นตารางสรุป ใช้แต่ ifs อย่างเดียวครับ