Page 1 of 1

มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อนไข

Posted: Wed Nov 02, 2011 12:51 pm
by use700
สวัสดีครับท่านอาจารย์
มมีปัญหาเรื่อง Macro ครับ คือต้อง copy ข้อมูลจาก sheet Input ไปยัง sheet Result
แต่มีปัญหาคือ ต้องตรวจสอบ ผลรวม > 0 (column N) ถึงจะดึงข้อมูลไปใส่ครับและ
ในsheet Result ฟิลด์ Status ต้องใส่ เป็นกรุงเทพ เลยครับ
ลองเขียนโค้ดแล้ว ที่ปุ่ม Paste Data ครับ แต่ เจอ 2เคส ข้างบนแล้วปวดหัวครับ
แนบ file มาให้อาจารย์ช่วยแนะนำครับ
รบกวนท่านอาจารย์แนะนำด้วยครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Wed Nov 02, 2011 1:24 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub GenSegment()
    Dim rt As Range, rs As Range
    Dim r As Range
    With Worksheets("Input")
        Set rs = .Range("N5", .Range("N" & Rows.Count).End(xlUp))
    End With
    For Each r In rs
        If r <> 0 Then
            Set rt = Worksheets("Result").Range("B65536").End(xlUp).Offset(1, 0)
            r.Offset(0, -13).Resize(1, 13).Copy rt
        End If
    Next r
    Application.CutCopyMode = False
    MsgBox "Finish."
End Sub

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Wed Nov 02, 2011 1:41 pm
by use700
กราบขอบพระคุณท่านอาจารย์มากๆๆครับ สามารถทำได้ตามที่ท่านอาจารย์แนะนำครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Wed Nov 02, 2011 3:04 pm
by use700
ท่านอาจารย์ครับ รบกวนเพิ่ม เติมครับ
ในsheet Result ฟิลด์ Status ต้องใส่ เป็นกรุงเทพ ตามจำนวน record ที่ส่งมาจาก sheet Input ครับ
รบกวนท่านอาจารย์ด้วยครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Wed Nov 02, 2011 3:27 pm
by snasui
:D คราวต่อไปช่วยปรับมาก่อนนะครับ ติดตรงไหนค่อยมาดูกันต่อ

จาก Code เดิมที่ผมเขียนให้ไปปรับเป็นตามด้านล่างครับ

Code: Select all

'Other code
If r <> 0 Then
   Set rt = Worksheets("Result").Range("B65536").End(xlUp).Offset(1, 0)
   r.Offset(0, -13).Resize(1, 13).Copy rt
   rt.offset(0,-1) = "กรุงเทพ" '<== Add this line.
End If
'Other code

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Wed Nov 02, 2011 3:31 pm
by use700
กราบขอบพระคุณท่านอาจารย์อีกครั้งครับ
สามารถนำไปใช้ได้แล้วครับ ขอบพระคุณมากๆครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Wed Nov 02, 2011 11:17 pm
by use700
เรียนท่านอาจารย์
เนื่องจาก excel ที่ผมทำมีการเพิ่ม SERIAL CODE ที่ sheet Result โดยต้องนำค่า "002"รวมกับ ACCOUNT
ผมลองเขียนแล้ว error ครับ และต้องการให้ sheet Result และ Result2 รวมกันอยู่ใน sheet Total
ผมสามารถเขียนโค้ดต่อจาก หลัง ' Range("N") = "002" + Range("B2") ได้อย่างไรครับเพื่อจะนำ ข้อมูลไปรวมกันไว้ที่sheet total
If r <> 0 Then

Set rt = Worksheets("Result").Range("B65536").End(xlUp).Offset(1, 0)
r.Offset(0, -13).Resize(1, 13).Copy rt
rt.Offset(0, -1) = "กรุงเทพ"
' Range("N") = "002" + Range("B2")

End If
รบกวนท่านอาจารย์แนะนำด้วยครับ
กราบขอบพระคุณอย่างสูงครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Thu Nov 03, 2011 9:05 am
by snasui
:shock: หากยังไม่แม่นในการเขียน Code เพื่อให้ง่ายแล้วข้อมูลทุกอย่าง เช่น Serial, Status ควรอยู่ที่ชีท Input แล้วค่อยใช้ Code นำไปวางแบบต่อกันเป็นฐานข้อมูล ซึ่งจะง่ายกว่ากันมากครับ ไม่ควรใช้ Code VBA สร้างรหัสหรือค่าอื่น ๆ เข้าไปแทรกอยู่เรื่อย ๆ ในลักษณะที่ทำอยู่นี้ครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Thu Nov 03, 2011 9:25 am
by use700
ขอบคุณท่านอาจารย์ที่แนะนำครับ แต่เนื่องจากที่ sheet Input ไม่สามารถ แสดงว่า Serial, Statusให้ทาง user เห็นได้ครับ
ผมลอง เพิ่ม Serial, Status ที่หน้า sheet Input แล้วทำการ hide ทำให้ข้อมูลที่ส่งมายัง Sheet Result ไม่สามารถ ส่งค่ามาได้
ท่านอาจารย์มีวิธีแนะนำใหม่ครับ เพราะ 2 filed ครับ ต้องไม่ให้user เห็นใน sheet Input แต่ต้องส่งค่ามาแสดงที่ sheet Result ครับ
โดย ค่า serial ต้อง เป็นค่า "002"รวมกับ ACCOUNT

กราบขอบพระคุณมากครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Thu Nov 03, 2011 9:45 am
by snasui
:D หากเป็นเช่นนั้นให้ทำไฟล์ตัวอย่างมาใหม่ โดยให้เรียงคอลัมน์ใหม่ Serial และ Status สามารถสลับกันได้ แต่ไม่ควรแทรกอยู่ระหว่าง Account และเดือนต่าง ๆ เนื่องจากข้อมูลอยูชิดติดกันอยู่แล้ว ไม่ควรไปแทรกกลาง ทั้งนี้เพื่อให้ง่ายต่อการใช้ Code ส่วนการนำข้อมูลจากชีทต่าง ๆ มาต่อกันนั้นศึกษาจากที่นี่ครับ :arrow: การนำข้อมูลหลายชีทมาต่อกัน

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Thu Nov 03, 2011 10:58 am
by use700
ขอบพระคุณท่านอาจารย์มากครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Thu Nov 03, 2011 11:36 am
by use700
เรียนท่านอาจารย์
ผมได้ทำ file มาใหม่ครับ คือนำ serial code ไว้ข้างหน้า account ตามที่อาจารย์แนะนำคือไม่ให้ไปแทรกตรงกลาง
แต่มีปัญหาคือ sheet Input ไม่สามารถ แสดงcolumn ว่า Serial code ให้ทาง user เห็นได้ครับ
และต้องแสดงที่ Sheet Result ในรูปแบบ"002"+ACCOUNT เมื่อรวมกันจะได้ "00252000"
ลองทดลองเขียนแล้วแต่ไม่ได้ครับ
รบกวนท่านอาจารย์แนะนำครับ

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Thu Nov 03, 2011 12:02 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

'Other code
    For Each r In rs
        If r <> 0 Then
            Set rt = Worksheets("Result").Range("C65536").End(xlUp).Offset(1, 0)
            r.Offset(0, -13).Resize(1, 13).Copy rt
            rt.Offset(0, -2) = "กรุงเทพ"
            rt.Offset(0, -1).NumberFormat = "@"
            rt.Offset(0, -1) = "002" & rt
        End If
    Next r
'Other code

Re: มีปัญหา copy sheet ต้นทางไปยังปลายทางแต่ต้องตรวจสอบเงื่อ

Posted: Thu Nov 03, 2011 12:51 pm
by use700
กราบขอบพระคุณท่านอาจารย์ครับ สามารถทำได้ตามคำแนะนำครับ