Page 1 of 1

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

Posted: Wed May 13, 2020 11:22 am
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

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

Posted: Wed May 13, 2020 12:50 pm
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))),"")

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

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

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

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

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

ขอบคุณครับ

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

Posted: Wed May 13, 2020 3:09 pm
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))),"")

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

Posted: Wed May 13, 2020 4:04 pm
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

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

Posted: Wed May 13, 2020 4:10 pm
by Bo_ry
ไม่เข้าใจ ทำตัวอย่างมาใหม่แยกอิสระกันไปเลย

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

Posted: Wed May 13, 2020 11:22 pm
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 ลงด้านล่าง

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

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

Posted: Thu May 14, 2020 9:11 am
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 ขอบคุณครับ ได้ตามต้องการครับ

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

Posted: Mon Feb 22, 2021 3:27 pm
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))),"")

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

Posted: Tue Feb 23, 2021 5:58 am
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 ลงด้านล่าง

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

Posted: Tue Feb 23, 2021 11:45 am
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 ขอบคุณครับ ได้ตามต้องการครับ