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

ลองปรับ 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

คราวต่อไปช่วยปรับมาก่อนนะครับ ติดตรงไหนค่อยมาดูกันต่อ
จาก 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

หากยังไม่แม่นในการเขียน 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

หากเป็นเช่นนั้นให้ทำไฟล์ตัวอย่างมาใหม่ โดยให้เรียงคอลัมน์ใหม่ Serial และ Status สามารถสลับกันได้ แต่ไม่ควรแทรกอยู่ระหว่าง Account และเดือนต่าง ๆ เนื่องจากข้อมูลอยูชิดติดกันอยู่แล้ว ไม่ควรไปแทรกกลาง ทั้งนี้
เพื่อให้ง่ายต่อการใช้ Code ส่วนการนำข้อมูลจากชีทต่าง ๆ มาต่อกันนั้นศึกษาจากที่นี่ครับ
การนำข้อมูลหลายชีทมาต่อกัน
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

ลองปรับ 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
กราบขอบพระคุณท่านอาจารย์ครับ สามารถทำได้ตามคำแนะนำครับ