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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
trirongcop
Member
Posts: 215 Joined: Fri Dec 18, 2015 3:21 pm
#1
Post
by trirongcop » Thu Jun 21, 2018 4:51 pm
สวัสดีครับ
ผมอยาก จะเรียง Column ใหม่โดย การเอา Column G เป็นตัวตั้ง ครับ
แล้วดึงข้อมูลจาก Column E ขึ้นมาครับ
ตัวอย่าง ตามเอกสารแนบ ครับ
You do not have the required permissions to view the files attached to this post.
Supachok
Gold
Posts: 1014 Joined: Wed Jun 18, 2014 11:11 am
Excel Ver: 2013
#2
Post
by Supachok » Thu Jun 21, 2018 5:01 pm
Copy cell แถว E
ไป paste ที่ G2 / paste special > transpose.
จะได้ผลลัพธ์
trirongcop
Member
Posts: 215 Joined: Fri Dec 18, 2015 3:21 pm
#3
Post
by trirongcop » Thu Jun 21, 2018 5:12 pm
มีเงื่อนไข
โดย ItemID ต้อง ตรงกันครับ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Thu Jun 21, 2018 7:20 pm
ตัวอย่างสูตรตามด้านล่างครับ
ที่ G2 คีย์
=IFERROR(INDEX($A$2:$A$56,SMALL(IF(FREQUENCY(MATCH($A$2:$A$56,$A$2:$A$56,0),ROW($A$2:$A$56)-ROW($A$2)+1),ROW($A$2:$A$56)-ROW($A$2)+1),ROWS(G$2:G2))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
ที่ H2 คีย์
=IFERROR(INDEX($E$2:$E$56,SMALL(IF($A$2:$A$56=$G2,ROW($A$2:$A$56)-ROW($A$2)+1),COLUMNS($H2:H2))),"")
Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง
! Note: Ctrl+Shift+Enter
เป็นการสร้างสูตร Array โดยสามารถเลือกดำเนินการตามข้อ 1 หรือ 2 ด้านล่าง
กรณีคีย์สูตรเอง เมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น
Ctrl และ Shift พร้อมกันค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
กรณี Copy สูตรไปวางให้กดแป้น F2 เพื่อทำการ Edit Cell นั้นก่อน
จากนั้นกดแป้น Ctrl และ Shift พร้อมกันค้างไว้แล้วตามด้วย Enter เพื่อสร้างเป็นสูตร Array
หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น { =YourFormulas(...)}
ปีกกานี้ไม่สามารถคีย์เข้าไปเอง จะต้องมาด้วยการกดแป้น Ctrl+Shift+Enter เท่านั้น
ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
การแก้ไขเปลี่ยนแปลงสูตร Array จะต้องกดแป้นให้รับสูตรด้วย Ctrl+Shift+Enter ทุกครั้ง
trirongcop
Member
Posts: 215 Joined: Fri Dec 18, 2015 3:21 pm
#6
Post
by trirongcop » Fri Jun 22, 2018 2:09 pm
อาจารย์ ครับ
สูตรใช้ได้ดี ครับ แต่เวลาข้อมูลเยอะ ประมาณ 10000 Low ขึ้นไป ใช้เวลานานมากครับ
อาจารย์ พอแนะนำ การใช้ VBA ทดแทนยังไงได้บ้าง ครับ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#7
Post
by snasui » Fri Jun 22, 2018 6:39 pm
งานนี้สามารถเขียนด้วย VBA ได้หลากหลายแบบครับ
หลักการก็ต้องหาค่าที่ไม่ซ้ำออกมาก่อน สามารถใช้ Remove Dupplicates ได้ จากนั้นค่อย Loop ค่าที่เกี่ยวข้องมาวางเรียงไปด้านขวาครับ
trirongcop
Member
Posts: 215 Joined: Fri Dec 18, 2015 3:21 pm
#8
Post
by trirongcop » Mon Jun 25, 2018 8:33 am
ครับอาจารย์
อาจารย์พอมีตัวอย่างไม่ ครับ
ผมไม่รู้เกี่ยวกับ VBA เลย ครับ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#9
Post
by snasui » Mon Jun 25, 2018 8:05 pm
การ Remove Duplicate สามารถใช้การบันทึก Macro มาช่วยได้ ส่วนการ Loop ศึกษาได้จากฟอรัมนี้มีจำนวนมาก เช่น For Each...Next, Fo...Next, Do...Loop เป็นต้นครับ
Link นี้ก็เป็นการ Loop เบื้องต้นครับ
https://snasui.com/wordpress/vba-excel-for-next/
trirongcop
Member
Posts: 215 Joined: Fri Dec 18, 2015 3:21 pm
#10
Post
by trirongcop » Tue Jun 26, 2018 10:02 am
ขอบคุณ อาจารย์ ครับ
ได้แล้วครับ ใช้ Access Run in Crosstab ครับ