Page 1 of 1
แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 11:31 am
by tstc79tt
คือผมต้องการแปลง ข้อมูลจาก Column เป็น Row มีวิธีทำให้คอลัม มากกว่า 256 ได้ไหมครับ หากไม่มีก็ไม่เป็นไรตรับ
แล้วก็ ผมจะทำยังครับให้กด ปุ่ม CollectResult แล้วค่าจากด้านบนถูกก็อปลงมาข้างล่าง ลงไปเรื่อยๆในแต่ละครั้งที่กด
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 11:40 am
by snasui
tstc79tt wrote:คือผมต้องการแปลง ข้อมูลจาก Column เป็น Row มีวิธีทำให้คอลัม มากกว่า 256 ได้ไหมครับ หากไม่มีก็ไม่เป็นไรครับ
ใน Excel 2003 ไม่มีวิธีในการเพิ่มคอลัมน์ให้มากกว่า 256 คอลัมน์ครับ
tstc79tt wrote: ผมจะทำยังครับให้กด ปุ่ม CollectResult แล้วค่าจากด้านบนถูกก็อปลงมาข้างล่าง ลงไปเรื่อยๆในแต่ละครั้งที่กด
การทำเช่นนั้นต้องเขียน VBA ไม่ทราบว่าได้เขียนมาแล้วหรือไม่ ชือ Procedure ว่าอะไร อยู่ใน Module ใดครับ
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 1:58 pm
by tstc79tt
ทำไม่ได้ครับ เลยไม่มีในนั้น

Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 2:17 pm
by snasui

สำหรับ VBA ต้องเป็นไปตามกฎข้อ 5 ด้านบนครับ

Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 4:00 pm
by tstc79tt
Sub CopyPaste()
Dim sh As Worksheet
For Each sh In Application.Worksheets
Code: Select all
If sh.Index <> Worksheets.Count Then
Worksheets(3).Range("A500").End(xlUp).Offset(1, 0).Value = sh.Range("A1:L34").Value
End If
Next sh
End Sub
อธิบายโค๊ด บรรทัดนี้ให้ผมได้ไหมครับ อยากรู้การทำงานของมัน
แล้วก็หากผมต้องการ ทำข้อมูล จาก column ชีต 2 มาใส่ใน ชีต3 เป็น Row แทน นี้ทำยังไงหรือครับ ผมลองใช้ tranpose มันก็ไม่ขึ้นให้น่ะครับ
อยู่มีไฟล์แนบครับ
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 4:14 pm
by snasui

ลองดูคำแปลใน Code ด้านล่างครับ
Code: Select all
If sh.Index <> Worksheets.Count Then 'หากลำดับที่ของชีท sh ไม่เท่ากับจำนวนชีททั้งหมดแล้ว
Worksheets(3).Range("A500").End(xlUp).Offset(1, 0).Value = sh.Range("A1:L34").Value 'ให้ค่าของเซลล์ว่างเซลล์แรกในคอลัมน์ A โดยดูจาก A500 ขึ้นไป ของชีทลำดับที่ 3 มีค่าเท่ากับค่าในชีท sh ช่วงเซลล์ A1:L34
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 4:52 pm
by tstc79tt
ขอบคุณ ถามต่อน่ะครับ ผมลอง Tranpose เปลี่ยนจาก คือนำข้อมูลจาก แนวตั้งมาเป็นแนวนอนในอีกชีต ขอคำชี้แนะหน่อยครับ มันผิดๆน่ะครับที่ผมพยายามทำ
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 5:11 pm
by snasui

ผมยังไม่ดูไฟล์แนบนะครับ
จากที่แนบมาถามในความเห็นก่อนหน้า สิ่งที่ต้องการทำคือการสลับแกนของข้อมูล ตาม Code ที่เขียนมาในความเห็นก่อนนั้น
ไม่ได้เป็นการสลับแกนของข้อมูลแต่อย่างใด
ให้ลองบันทึก Macro เพื่อดูว่าการสลับแกนข้อมูลนั้นได้ Code เป็นอย่างไร แล้วค่อยนำ Code นั้นมาปรับใช้ครับ
โดยลองบันทึก Macro ตามลำดับดังนี้ครับ
- คลิกขวาที่พื้นที่ต้นทาง > Copy
- คลิกขวาที่เซลล์ปลายทาง > Paste Special > Values > Transpose > OK > กดแป้น ESC
- ดู Code ที่ได้และปรับใช้
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 9:28 pm
by tstc79tt
แล้วทำเป็น Function ได้หรือปล่าวครับ หรือ ต้องใช้เป็ฯ VBA อย่างเดี่ยวครับ
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 9:34 pm
by snasui

ฟังก์ชั่นก็ทำได้ครับ
ลองตามนี้ครับ
- ที่ C4 คีย์
=INDEX(Sheet2!$C$4:$C$49,COLUMNS($C4:C4))
Enter > Copy ไปทางขวา
- ที่ C5 คีย์
=INDEX(Sheet2!$E$4:$E$49,COLUMNS($C5:C5))
Enter > Copy ไปทางขวา
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 9:44 pm
by tstc79tt
ขอโทษครับผมแจ้งไม่ละเอียดที่ว่า เรื่องโค็ดด้านบนผมอยากรู้ และก็ดันเปลี่ยนมาถาม เรื่อง การแปลงแนวตั้งแนวนอน
ขอบคุณมากครับ สำหรับ Function Tranpose นี่ทำงานยังไงเหรอครับ
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 9:51 pm
by snasui

ทำการสลับแกนข้อมูลครับ อ่านที่นี่และลองทำตามจะได้เข้าใจมากขึ้นครับ
http://office.microsoft.com/th-th/excel ... aspx?CTT=1
Re: แปลงจาก Column เป็ม Row
Posted: Wed Dec 12, 2012 10:10 pm
by tstc79tt
ขอบคุณครับ ของอาจารย์ที่ให้มาปัญหาน้อยกว่าที่ ใช้ Tranpose เดี่ยวๆเยอะเลยครับ
