:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

เรียงต่อข้อมูลในคอลัมน์เดียวกัน

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#1

Post by Totem »

:D เรียนอาจารย์และเพื่อนสมาชิก

อยากเรียงข้อมูลในคอลัมน์เดียวกัน มี 3 กรณี ดังนี้

กรณีที่ 1
ข้อมูลคอลัมน์ B ที่ B2:B10 เรียงแถวเว้นแถวกันอยู่
ให้ไปเรียงข้อมูลใหม่ในคอลัมน์ P ที่ P3:P7 ติดกันไป

กรณีที่ 2
ข้อมูลคอลัมน์ D , F , H แต่ละคอลัมน์เรียงแถวเว้นแถวและเว้นคอลัมน์ระหว่างคอลัมน์ด้วย
ให้ไปเรียงข้อมูลใหม่ในคอลัมน์ R ที่ R3:R20 ติดกันไป

กรณีที่ 3
ข้อมูลคอลัมน์ J , K , L แต่ละคอลัมน์เรียงแถวติดกันและเรียงคอลัมน์ติดกัน
ให้ไปเรียงข้อมูลใหม่ในคอลัมน์ T ที่ T3:T20 ติดกันไป

ทั้ง 3 กรณีเป็นได้ทั้งตัวเลขและตัวอักษร แต่ละคอลัมน์อาจมีข้อมูลแถวเท่ากันหรือไม่เท่ากันมีมากขึ้นหรือน้อยลงก็ได้ เมื่อมีข้อมูลเพิ่มเติมเข้าไป ก็ให้คอลัมน์ P , R , T เรียงเพิ่มเข้าในคอลัมน์เดียวกันตามแต่ละกรณี


ขอบคุณครับ


เรียงต่อข้อมูลในคอลัมน์.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#2

Post by Bo_ry »

R3
=IFERROR(INDEX(A:L,MOD(AGGREGATE(15,6,COLUMN(D$2:H$20)*10^4+ROW(D$2:H$20)/(D$2:H$20<>""),ROWS(R$3:R3)),10^4),AGGREGATE(15,6,COLUMN(D$2:H$20)/(D$2:H$20<>""),ROWS(R$3:R3))),"")
You do not have the required permissions to view the files attached to this post.
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#3

Post by Totem »

:D ขอแยกเป็นกรณีครับ ทั้ง 3 กรณีไม่ได้สัมพันธ์กันหรือเกี่ยวข้องกันครับ ที่ยกตัวอย่างอยู่ใน sheet เดียวกัน เพื่อสะดวกในการตอบคำถามครับ

กรณีที่1 คอลัมน์ B ไปเรียงข้อมูลใน คอลัมน์ P

กรณีที่2 คอลัมน์ D:H ไปเรียงข้อมูลใน คอลัมน์ R

กรณีที่3 คอลัมน์ J:L ไปเรียงข้อมูลใน คอลัมน์ T

ขอบคุณครับ
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#4

Post by Bo_ry »

ก็ใช้สูตรเดียวกัน แค่เปลี่ยนช่วง สีน้ำเงินให้เป็น B2:B20 , D2:H20 , J2:L20

=IFERROR(INDEX(A:L,MOD(AGGREGATE(15,6,COLUMN(D$2:H$20)*10^4+ROW(D$2:H$20)/(D$2:H$20<>""),ROWS(R$3:R3)),10^4),AGGREGATE(15,6,COLUMN(D$2:H$20)/(D$2:H$20<>""),ROWS(R$3:R3))),"")
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#5

Post by Totem »

Bo_ry wrote: Wed May 13, 2020 3:09 pm ก็ใช้สูตรเดียวกัน แค่เปลี่ยนช่วง สีน้ำเงินให้เป็น B2:B20 , D2:H20 , J2:L20

=IFERROR(INDEX(A:L,MOD(AGGREGATE(15,6,COLUMN(D$2:H$20)*10^4+ROW(D$2:H$20)/(D$2:H$20<>""),ROWS(R$3:R3)),10^4),AGGREGATE(15,6,COLUMN(D$2:H$20)/(D$2:H$20<>""),ROWS(R$3:R3))),"")
:D ปรับช่วงที่ B2:B20 , D2:H20 , J2:L20 กำหนดได้ผลลัพธ์ที่ต้องการจริง แต่
สิ่งที่ต้องการ ในแต่ละกรณีไม่ได้เกี่ยวข้องกันแยกอิสระกันเป็นกรณีๆไปครับ เพราะสูตรเป็น INDEX(A:L... เกี่ยวเนื่องกันอยู่ครับ
ซึ่งที่อยากได้คือประมาณนี้ =INDEX(B2:B20,MOD(AGGREGATE(15,6,COLUMN($B$2:$B$20)... เป็นต้น

remark กรณีทั้ง 3 เสมือนหนึ่งว่า เป็นแต่ละกรณี เป็นคนละsheets ดังนี้ว่า sheets1 กรณีที่1 sheets2 กรณีที่2 และsheets3 กรณีที่3 ที่เห็นอยู่ตามตัวอย่างรวมกันนั้น ให้สังเกตง่ายๆใน sheet1 เท่านั้นครับ
ผมทำ sheets ตัวอย่างแยกเป็นกรณีแต่ละ sheets ไว้ให้แล้ว
ขอบคุณครับ

เรียงต่อข้อมูลในคอลัมน์.xlsx
You do not have the required permissions to view the files attached to this post.
Last edited by Totem on Wed May 13, 2020 4:42 pm, edited 4 times in total.
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#6

Post by Bo_ry »

ไม่เข้าใจ ทำตัวอย่างมาใหม่แยกอิสระกันไปเลย
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#7

Post by snasui »

Totem wrote: Wed May 13, 2020 4:04 pm ซึ่งที่อยากได้คือประมาณนี้ =INDEX(B2:B20,MOD(AGGREGATE(15,6,COLUMN($B$2:$B$20)... เป็นต้น
:D ตัวอย่างการ Scope พื้นที่ใน Index ครับ

ที่ Sheet1 เซลล์ E3

=IFERROR(INDEX($B$2:$B$20,MOD(AGGREGATE(15,6,(100000*COLUMN($B$2:$B$20)+(ROW($B$2:$B$20)-ROW($B$2)+1))/($B$2:$B$20<>""),ROWS(E$3:E3)),100000),AGGREGATE(15,6,(COLUMN($B$2:$B$20)-COLUMN($B$2)+1)/($B$2:$B$20<>""),ROWS(E$3:E3))),"")

Enter > Copy ลงด้านล่าง

กรณีนำไปใช้กับช่วงอื่นเปลี่ยนเฉพาะช่วงที่ระบายสีครับ
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#8

Post by Totem »

snasui wrote: Wed May 13, 2020 11:22 pm
Totem wrote: Wed May 13, 2020 4:04 pm ซึ่งที่อยากได้คือประมาณนี้ =INDEX(B2:B20,MOD(AGGREGATE(15,6,COLUMN($B$2:$B$20)... เป็นต้น
:D ตัวอย่างการ Scope พื้นที่ใน Index ครับ

ที่ Sheet1 เซลล์ E3

=IFERROR(INDEX($B$2:$B$20,MOD(AGGREGATE(15,6,(100000*COLUMN($B$2:$B$20)+(ROW($B$2:$B$20)-ROW($B$2)+1))/($B$2:$B$20<>""),ROWS(E$3:E3)),100000),AGGREGATE(15,6,(COLUMN($B$2:$B$20)-COLUMN($B$2)+1)/($B$2:$B$20<>""),ROWS(E$3:E3))),"")

Enter > Copy ลงด้านล่าง

กรณีนำไปใช้กับช่วงอื่นเปลี่ยนเฉพาะช่วงที่ระบายสีครับ

:D ขอบคุณครับ ได้ตามต้องการครับ
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#9

Post by Totem »

:D จากสูตรถ้าจะนำไปใช้กับ office 2007 จะปรับสูตรอย่างไรครับ ขอบคุณครับ

Code: Select all

=IFERROR(INDEX($B$2:$B$20,MOD(AGGREGATE(15,6,(100000*COLUMN($B$2:$B$20)+(ROW($B$2:$B$20)-ROW($B$2)+1))/($B$2:$B$20<>""),ROWS(E$3:E3)),100000),AGGREGATE(15,6,(COLUMN($B$2:$B$20)-COLUMN($B$2)+1)/($B$2:$B$20<>""),ROWS(E$3:E3))),"")
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#10

Post by snasui »

Totem wrote: Mon Feb 22, 2021 3:27 pm ใช้กับ office 2007 จะปรับสูตรอย่างไรครับ
:D ตัวอย่างการปรับสูตรครับ

E3

=IFERROR(INDEX($B$2:$B$20,MOD(SMALL(IF($B$2:$B$20<>"",100000*COLUMN($B$2:$B$20)+(ROW($B$2:$B$20)-ROW($B$2)+1)),ROWS(E$3:E3)),100000),SMALL(IF($B$2:$B$20<>"",COLUMN($B$2:$B$20)-COLUMN($B$2)+1),ROWS(E$3:E3))),"")

Ctrl+Shift+Enter > Copy ลงด้านล่าง
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: เรียงต่อข้อมูลในคอลัมน์เดียวกัน

#11

Post by Totem »

snasui wrote: Tue Feb 23, 2021 5:58 am
Totem wrote: Mon Feb 22, 2021 3:27 pm ใช้กับ office 2007 จะปรับสูตรอย่างไรครับ
:D ตัวอย่างการปรับสูตรครับ

E3

=IFERROR(INDEX($B$2:$B$20,MOD(SMALL(IF($B$2:$B$20<>"",100000*COLUMN($B$2:$B$20)+(ROW($B$2:$B$20)-ROW($B$2)+1)),ROWS(E$3:E3)),100000),SMALL(IF($B$2:$B$20<>"",COLUMN($B$2:$B$20)-COLUMN($B$2)+1),ROWS(E$3:E3))),"")

Ctrl+Shift+Enter > Copy ลงด้านล่าง


:D ขอบคุณครับ ได้ตามต้องการครับ
Post Reply