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
:D
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
:D สำหรับ VBA ต้องเป็นไปตามกฎข้อ 5 ด้านบนครับ :roll:

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
:D ลองดูคำแปลใน 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
:D ผมยังไม่ดูไฟล์แนบนะครับ

จากที่แนบมาถามในความเห็นก่อนหน้า สิ่งที่ต้องการทำคือการสลับแกนของข้อมูล ตาม Code ที่เขียนมาในความเห็นก่อนนั้นไม่ได้เป็นการสลับแกนของข้อมูลแต่อย่างใด

ให้ลองบันทึก Macro เพื่อดูว่าการสลับแกนข้อมูลนั้นได้ Code เป็นอย่างไร แล้วค่อยนำ Code นั้นมาปรับใช้ครับ

โดยลองบันทึก Macro ตามลำดับดังนี้ครับ
  1. คลิกขวาที่พื้นที่ต้นทาง > Copy
  2. คลิกขวาที่เซลล์ปลายทาง > Paste Special > Values > Transpose > OK > กดแป้น ESC
  3. ดู 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
:D ฟังก์ชั่นก็ทำได้ครับ

ลองตามนี้ครับ
  1. ที่ C4 คีย์
    =INDEX(Sheet2!$C$4:$C$49,COLUMNS($C4:C4))
    Enter > Copy ไปทางขวา
  2. ที่ 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
:D ทำการสลับแกนข้อมูลครับ อ่านที่นี่และลองทำตามจะได้เข้าใจมากขึ้นครับ

http://office.microsoft.com/th-th/excel ... aspx?CTT=1

Re: แปลงจาก Column เป็ม Row

Posted: Wed Dec 12, 2012 10:10 pm
by tstc79tt
ขอบคุณครับ ของอาจารย์ที่ให้มาปัญหาน้อยกว่าที่ ใช้ Tranpose เดี่ยวๆเยอะเลยครับ :D