Page 1 of 1
ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 2:36 pm
by ekkaluk_suk
ถ้าต้องการ นำข้อมูลที่มีอยู่จาก sheet 1 ไปแสดงที่ sheet ที่ 2 จะสามารถทำอย่างไร
ได้บ้างครับ โดยต้องการให้แสดงเฉพาะที่เราต้องการ ตามที่ไฮไลท์ สีเหลืองไว้ ใช้เป็นสูตร
ให้ให้ Run macro ก็ได้ครับ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 2:42 pm
by snasui

เอาไปวางด้วยเงื่อนไขใดครับ ถ้าไม่มีเงื่อนไขก็แค่ Link ไปเฉย ๆ คือ คลุมข้อมูลที่ต้องการ > Copy > คลิกขวาบนเซลล์เป้าหมาย > Paste Special > Paste Link ไม่ต้องเขียนสูตรอื่นใดครับ
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 2:46 pm
by ekkaluk_suk
snasui wrote:
เอาไปวางด้วยเงื่อนไขใดครับ ถ้าไม่มีเงื่อนไขก็แค่ Link ไปเฉย ๆ คือ คลุมข้อมูลที่ต้องการ > Copy > คลิกขวาบนเซลล์เป้าหมาย > Paste Special > Paste Link ไม่ต้องเขียนสูตรอื่นใดครับ
เงื่อนไข คือให้กรองเฉพาะข้อมูล ตาม column ที่เราต้องการเท่านั้นมาแสดงครับ คือ 4 column และให้ข้อมูล
เรียงต่อไปเรื่อย ๆ ลงด้านล่าง เป็นการจัดเรียงข้อมูลใหม่ เฉพาะ 4 column ที่เราต้องการเท่านั้น
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 2:52 pm
by snasui

คำตอบเดิมครับ เมื่อต้องการเฉพาะคอลัมน์ก็ Copy ไปวางแบบ Link เฉพาะคอลัมน์ ยกเว้นจะเลือกบางค่าในคอลัมน์ นั้น ๆ ถึงจะต้องเขียนสูตรที่ซับซ้อนขึ้นไปครับ
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 3:03 pm
by ekkaluk_suk
คือต้องการลดเวลาในการ copy ลงครับ ไม่แน่ใจว่าจะมีวิธีอื่น ที่เร็วกว่าหรือไม่ ประมาณว่า 1 click ออกมาเป็น sheet ที่ 2 เลยน่ะครับ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 3:06 pm
by snasui

การ Copy แบบ Link เราทำแค่ครั้งแรกที่สร้างงานนี้เท่านั้นครับ สามารถ Link ได้ทั้งคอลัมน์ ค่าที่เปลี่ยนแปลงจากต้นทางก็จะเปลี่ยนไปที่ปลายทางเสมอครับ
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 3:23 pm
by ekkaluk_suk
snasui wrote:
การ Copy แบบ Link เราทำแค่ครั้งแรกที่สร้างงานนี้เท่านั้นครับ สามารถ Link ได้ทั้งคอลัมน์ ค่าที่เปลี่ยนแปลงจากต้นทางก็จะเปลี่ยนไปที่ปลายทางเสมอครับ
ขอท้าวความก่อนครับ คือ shee1 จะไป file ที่ลูกค้าส่งมาให้เรา ส่วน sheet 2 เราต้องการมาจัด Format
เพื่อเอาเข้าในระบบ ERP ดังนั้นแต่ละครั้ง file จะมีการเปลี่ยนแปลงตลอด คือไม่ใช่ file ตัวเดิม ดังนั้นการทำ
format จะทำครั้งเดียว สำหรับ file 1 file
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 3:42 pm
by snasui

ยังไม่กระจ่างในสิ่งที่ต้องการจะทำครับ
ถ้าหากต้องการให้นำข้อมูลไปแสดงที่ชีท 2 เฉพาะคอลัมน์
โดยไม่มีเงื่อนไข สามารถที่จะ Copy แล้ววางแบบ Link ได้เลย และ
หากต้องมีการจัด Format จะต้องทราบด้วยครับว่าัจัด Format เป็นแบบใด ถ้าแค่วางสับคอลัมน์กันเท่านั้นก็สามารถทำในตอน Copy และวางแบบ Link คือต้องค่อย ๆ Copy มาทีละคอลัมน์จนครบ
หากเงื่อนไขมีว่าดึงมาเฉพาะทุกบรรทัดที่มีค่า x อันนี้ต้องพึ่งสูตรที่ซับซ้อนขึ้น และหากเงื่อนไขมีว่าได้รับข้อมูลมาเฉพาะชีท 1 ชีทเดียว ต้องการให้สร้างชีท 2 และวางข้อมูลอัตโนมัติ อย่างนี้ถึงจะต้องพึ่ง VBA ครับ
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 3:46 pm
by ekkaluk_suk
snasui wrote:
ยังไม่กระจ่างในสิ่งที่ต้องการจะทำครับ
ถ้าหากต้องการให้นำข้อมูลไปแสดงที่ชีท 2 เฉพาะคอลัมน์
โดยไม่มีเงื่อนไข สามารถที่จะ Copy แล้ววางแบบ Link ได้เลย และ
หากต้องมีการจัด Format จะต้องทราบด้วยครับว่าัจัด Format เป็นแบบใด ถ้าแค่วางสับคอลัมน์กันเท่านั้นก็สามารถทำในตอน Copy และวางแบบ Link คือต้องค่อย ๆ Copy มาทีละคอลัมน์จนครบ
หากเงื่อนไขมีว่าดึงมาเฉพาะทุกบรรทัดที่มีค่า x อันนี้ต้องพึ่งสูตรที่ซับซ้อนขึ้น และหากเงื่อนไขมีว่าได้รับข้อมูลมาเฉพาะชีท 1 ชีทเดียว ต้องการให้สร้างชีท 2 และวางข้อมูลอัตโนมัติ อย่างนี้ถึงจะต้องพึ่ง VBA ครับ
และหากเงื่อนไขมีว่าได้รับข้อมูลมาเฉพาะชีท 1 ชีทเดียว ต้องการให้สร้างชีท 2 และวางข้อมูลอัตโนมัติ อย่างนี้ถึงจะต้องพึ่ง VBA ครับ
อันนี้เลยครับที่ต้องการ พอจะชี้แนะได้มั้ยคัรบ
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 3:55 pm
by snasui

ลองดู Code ด้านล่างครับ
Code: Select all
Sub CopyRage()
On Error Resume Next
Worksheets.Add
ActiveSheet.Name = "2"
Worksheets("1").Range("V6:V73").Copy
Worksheets("2").Range("A1").PasteSpecial xlPasteValues
Worksheets("1").Range("O6:O73").Copy
Worksheets("2").Range("B1").PasteSpecial xlPasteValues
Worksheets("1").Range("L6:M73").Copy
Worksheets("2").Range("C1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 4:02 pm
by ekkaluk_suk
ขออีกนิดครับ
ต้อง copy วางที่ Sheet ไหนและมันจะทำงานด้วยคำสั่งอย่างไรครับ รบกวนหน่อยเนื่องจาก VBA ยังไม่เคยใช้งานครับ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 4:13 pm
by snasui

สามารถทำตามนี้ครับ
1. ที่โปรแกรม Excel กดแป้น Alt+F11 จะเข้าหน้าต่าง VBE
2. ที่หน้าต่าง VBE คลิกเมนู Insert เลือก Module
3. Copy Code ด้านล่างนี้ไปวาง (ผมปรับเพิ่มให้หลังจากสังเกตเห็นว่าให้เติมข้อมูลให้เต็มช่องที่ว่าง ๆ ไว้ด้วย)
Code: Select all
Sub CopyRage()
Dim r1 As Range
Dim r2 As Range
Dim i As Integer
On Error Resume Next
Worksheets.Add
ActiveSheet.Name = "2"
Worksheets("1").Range("V6:V73").Copy
Worksheets("2").Range("A1").PasteSpecial xlPasteValues
Worksheets("1").Range("O6:O73").Copy
Worksheets("2").Range("B1").PasteSpecial xlPasteValues
Worksheets("1").Range("L6:M73").Copy
Worksheets("2").Range("C1").PasteSpecial xlPasteValues
With Worksheets("2")
i = .Range("B65536").End(xlUp).Row
Set r2 = .Range("A2:A" & i)
End With
For Each r1 In r2
If r1 = "" Then
r1 = r1.End(xlUp)
End If
Next
Application.CutCopyMode = False
End Sub
4. กดแป้น Alt+Q เพื่อกลับไปยัง Excel และปิด VBE
5. เมื่อต้องการ Run Code ให้กดแป้น Alt+F8 > เลือก CopyRange > Run
เราสามารถสร้าง Object ใด ๆ เอาไว้เพื่อให้คลิกแล้ว Run Macro ได้ง่าย ๆ ครับ เมื่อสร้าง Object แล้วให้คลิกขวาที่ Object จากนั้นเลือก Assigned Macro > เลือก CopyRange
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 5:47 pm
by ekkaluk_suk
snasui wrote:
สามารถทำตามนี้ครับ
1. ที่โปรแกรม Excel กดแป้น Alt+F11 จะเข้าหน้าต่าง VBE
2. ที่หน้าต่าง VBE คลิกเมนู Insert เลือก Module
3. Copy Code ด้านล่างนี้ไปวาง (ผมปรับเพิ่มให้หลังจากสังเกตเห็นว่าให้เติมข้อมูลให้เต็มช่องที่ว่าง ๆ ไว้ด้วย)
Code: Select all
Sub CopyRage()
Dim r1 As Range
Dim r2 As Range
Dim i As Integer
On Error Resume Next
Worksheets.Add
ActiveSheet.Name = "2"
Worksheets("1").Range("V6:V73").Copy
Worksheets("2").Range("A1").PasteSpecial xlPasteValues
Worksheets("1").Range("O6:O73").Copy
Worksheets("2").Range("B1").PasteSpecial xlPasteValues
Worksheets("1").Range("L6:M73").Copy
Worksheets("2").Range("C1").PasteSpecial xlPasteValues
With Worksheets("2")
i = .Range("B65536").End(xlUp).Row
Set r2 = .Range("A2:A" & i)
End With
For Each r1 In r2
If r1 = "" Then
r1 = r1.End(xlUp)
End If
Next
Application.CutCopyMode = False
End Sub
4. กดแป้น Alt+Q เพื่อกลับไปยัง Excel และปิด VBE
5. เมื่อต้องการ Run Code ให้กดแป้น Alt+F8 > เลือก CopyRange > Run
เราสามารถสร้าง Object ใด ๆ เอาไว้เพื่อให้คลิกแล้ว Run Macro ได้ง่าย ๆ ครับ เมื่อสร้าง Object แล้วให้คลิกขวาที่ Object จากนั้นเลือก Assigned Macro > เลือก CopyRange
1.ถ้าต้องการให้ของเขตของข้อมูลยืดหยุ่นมากขึ้น สามารถระบุ column ไปอย่างเดียวได้หรือไม่ เผื่ออนาคตมีข้อมูลมากว่าแถวที่ 73
2.สูตรที่ copy มาของ column O ให้คูณ 1,000 ด้วยได้หรือไม่ เช่นต้นทางเป็น 14.700 ให้วางเป็น 14700
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 5:58 pm
by snasui

เปลี่ยนเลข 73 เป็นเลขใด ๆ ตามต้องการครับ (เช่นเปลี่ยนเป็น 65536) ส่วนจะให้คูณ 1000 ด้วยนั้นลองดู Code ตามด้านล่างครับ
Code: Select all
Sub CopyRage()
Dim r1 As Range
Dim r2 As Range
Dim i As Integer
On Error Resume Next
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "2"
Worksheets("1").Range("V6:V73").Copy
Worksheets("2").Range("A1").PasteSpecial xlPasteValues
Worksheets("1").Range("O6:O73").Copy
Worksheets("2").Range("B1").PasteSpecial xlPasteValues
Worksheets("1").Range("L6:M73").Copy
Worksheets("2").Range("C1").PasteSpecial xlPasteValues
With Worksheets("2")
i = .Range("B65536").End(xlUp).Row
Set r2 = .Range("A2:A" & i)
End With
For Each r1 In r2
If r1 = "" Then
r1 = r1.End(xlUp)
End If
r1.Offset(0, 1) = r1.Offset(0, 1) * 1000
Next
Application.CutCopyMode = False
End Sub
Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน
Posted: Sat Mar 19, 2011 6:09 pm
by ekkaluk_suk
ขอบคุณมากครับ ตรงตามความต้องการจริง ๆ สมกับเป็นกระบี่มือ 1 จริง ๆ
