snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
tstc79tt
Member
Posts: 83 Joined: Tue Nov 13, 2012 4:39 pm
#1
Post
by tstc79tt » Wed Dec 12, 2012 11:31 am
คือผมต้องการแปลง ข้อมูลจาก Column เป็น Row มีวิธีทำให้คอลัม มากกว่า 256 ได้ไหมครับ หากไม่มีก็ไม่เป็นไรตรับ
แล้วก็ ผมจะทำยังครับให้กด ปุ่ม CollectResult แล้วค่าจากด้านบนถูกก็อปลงมาข้างล่าง ลงไปเรื่อยๆในแต่ละครั้งที่กด
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31255 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Wed Dec 12, 2012 11:40 am
tstc79tt wrote: คือผมต้องการแปลง ข้อมูลจาก Column เป็น Row มีวิธีทำให้คอลัม มากกว่า 256 ได้ไหมครับ หากไม่มีก็ไม่เป็นไรครับ
ใน Excel 2003 ไม่มีวิธีในการเพิ่มคอลัมน์ให้มากกว่า 256 คอลัมน์ครับ
tstc79tt wrote: ผมจะทำยังครับให้กด ปุ่ม CollectResult แล้วค่าจากด้านบนถูกก็อปลงมาข้างล่าง ลงไปเรื่อยๆในแต่ละครั้งที่กด
การทำเช่นนั้นต้องเขียน VBA ไม่ทราบว่าได้เขียนมาแล้วหรือไม่ ชือ Procedure ว่าอะไร อยู่ใน Module ใดครับ
tstc79tt
Member
Posts: 83 Joined: Tue Nov 13, 2012 4:39 pm
#3
Post
by tstc79tt » Wed Dec 12, 2012 1:58 pm
ทำไม่ได้ครับ เลยไม่มีในนั้น
snasui
Site Admin
Posts: 31255 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Wed Dec 12, 2012 2:17 pm
สำหรับ VBA ต้องเป็นไปตามกฎข้อ 5 ด้านบนครับ
tstc79tt
Member
Posts: 83 Joined: Tue Nov 13, 2012 4:39 pm
#5
Post
by tstc79tt » Wed Dec 12, 2012 4:00 pm
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").ValueEnd If
Next sh
End Sub
อธิบายโค๊ด บรรทัดนี้ให้ผมได้ไหมครับ อยากรู้การทำงานของมัน
แล้วก็หากผมต้องการ ทำข้อมูล จาก column ชีต 2 มาใส่ใน ชีต3 เป็น Row แทน นี้ทำยังไงหรือครับ ผมลองใช้ tranpose มันก็ไม่ขึ้นให้น่ะครับ
อยู่มีไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31255 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Wed Dec 12, 2012 4:14 pm
ลองดูคำแปลใน 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
tstc79tt
Member
Posts: 83 Joined: Tue Nov 13, 2012 4:39 pm
#7
Post
by tstc79tt » Wed Dec 12, 2012 4:52 pm
ขอบคุณ ถามต่อน่ะครับ ผมลอง Tranpose เปลี่ยนจาก คือนำข้อมูลจาก แนวตั้งมาเป็นแนวนอนในอีกชีต ขอคำชี้แนะหน่อยครับ มันผิดๆน่ะครับที่ผมพยายามทำ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31255 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Wed Dec 12, 2012 5:11 pm
ผมยังไม่ดูไฟล์แนบนะครับ
จากที่แนบมาถามในความเห็นก่อนหน้า สิ่งที่ต้องการทำคือการสลับแกนของข้อมูล ตาม Code ที่เขียนมาในความเห็นก่อนนั้น
ไม่ได้ เป็นการสลับแกนของข้อมูลแต่อย่างใด
ให้ลองบันทึก Macro เพื่อดูว่าการสลับแกนข้อมูลนั้นได้ Code เป็นอย่างไร แล้วค่อยนำ Code นั้นมาปรับใช้ครับ
โดยลองบันทึก Macro ตามลำดับดังนี้ครับ
คลิกขวาที่พื้นที่ต้นทาง > Copy
คลิกขวาที่เซลล์ปลายทาง > Paste Special > Values > Transpose > OK > กดแป้น ESC
ดู Code ที่ได้และปรับใช้
tstc79tt
Member
Posts: 83 Joined: Tue Nov 13, 2012 4:39 pm
#9
Post
by tstc79tt » Wed Dec 12, 2012 9:28 pm
แล้วทำเป็น Function ได้หรือปล่าวครับ หรือ ต้องใช้เป็ฯ VBA อย่างเดี่ยวครับ
snasui
Site Admin
Posts: 31255 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#10
Post
by snasui » Wed Dec 12, 2012 9:34 pm
ฟังก์ชั่นก็ทำได้ครับ
ลองตามนี้ครับ
ที่ C4 คีย์
=INDEX(Sheet2!$C$4:$C$49,COLUMNS($C4:C4))
Enter > Copy ไปทางขวา
ที่ C5 คีย์
=INDEX(Sheet2!$E$4:$E$49,COLUMNS($C5:C5))
Enter > Copy ไปทางขวา
tstc79tt
Member
Posts: 83 Joined: Tue Nov 13, 2012 4:39 pm
#11
Post
by tstc79tt » Wed Dec 12, 2012 9:44 pm
ขอโทษครับผมแจ้งไม่ละเอียดที่ว่า เรื่องโค็ดด้านบนผมอยากรู้ และก็ดันเปลี่ยนมาถาม เรื่อง การแปลงแนวตั้งแนวนอน
ขอบคุณมากครับ สำหรับ Function Tranpose นี่ทำงานยังไงเหรอครับ
tstc79tt
Member
Posts: 83 Joined: Tue Nov 13, 2012 4:39 pm
#13
Post
by tstc79tt » Wed Dec 12, 2012 10:10 pm
ขอบคุณครับ ของอาจารย์ที่ให้มาปัญหาน้อยกว่าที่ ใช้ Tranpose เดี่ยวๆเยอะเลยครับ