Page 1 of 1
สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 1:35 pm
by yodpao.b
สอบทราบการเรียงลำดับตัวเลข
รูปที่ 1
11.JPG
คำถามต้องการเรียงลำดับตัวเลขย้อนไป ย้อนมา โดยต้องมีสัมพันธกับเฃล N2 N3 เมื่อมีการเปลี่ยนแปลงตัวเลขดังรูปที่ 1
รูปที่2
12.JPG
จากรูปที่ 2 ผมได้เรียงลำดับตามตัวเลขแล้วโดยตาราง นี้จะสัมพันธกับเฃล N2 N3 เมื่อมีการเปลี่ยนแปลงตัวเลขที่เฃลครับ
แต่ปัญหาคือมันเรียงแบบปกติครับ
ต้องการให้มันย้อนไปย้อนมาตามรูปที่ 1
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 2:32 pm
by snasui

ตัวอย่างสูตรที่ J6 ครับ
=IF(OR(J$5="",$I6=""),"",IF(ISODD($I6),10*(ROWS(J$6:J6)-1)+COLUMNS($J6:J6),10*(ROWS(J$6:J6)-1)-COLUMNS($J6:J6)+11))
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 3:02 pm
by yodpao.b
ผลออกมาถูกต้องครับ
แต่มีปัญหาอยู่ที่เมื่อเปลียนเซล N2 หรือ N3 แล้วค่าผิดพลาดครับดังรูปด้านล่างครับ
2.JPG
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 3:04 pm
by snasui

ตัวเลขใน N2:N3 สัมพันธ์กับค่าในตารางอย่างไร ช่วยอธิบายมาอย่างละเอียดครับ
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 3:25 pm
by yodpao.b
เมื่อ N2 เปลี่ยนค่าเป็นเลขอื่นๆแต่ไม่เกิน 70 ผลที่ได้คือจะไปกำหนดจุดที่ P2 ว่าในความยาวใช้กี่จุด
ยกตัวอย่าง
พิมพ์ N2 เลข 12
ผลที่ได้คือ P2 จะเป็น 13 จุด และในแถบสีเหลือง แถว 5J จะแสดงค่า หมายเลข 1 2 3 4 ...13 ครับ
หมายเลขที่โชว์ 1 2 3 4 ...13 จะมีผลไปกำหนดให้ตัวเลขในตารางแถวล่าง โชวค่า
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 3:33 pm
by snasui

ตัวอย่างการปรับสูตรที่ J6 ครับ
=IF(OR(J$5="",$I6=""),"",IF(ISODD($I6),$P$2*(ROWS(J$6:J6)-1)+COLUMNS($J6:J6),$P$2*(ROWS(J$6:J6)-1)-COLUMNS($J6:J6)+$P$2+1))
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 4:01 pm
by yodpao.b
ขอบคุณมากๆครับอาจารย์
ที่ต้องทำแบบนี้ เพราะส่วนใหญ พื้นที่จะยาวประมาณ70เมตร จะต้องเสียเวลาเดินวัดค่า ไปกลับครับ
ถ้าได้แบบนี้ก็จะประหยัดเวลาในการเดินมากครับ
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 5:21 pm
by jelelite
อีกสูตรนะครับ ที่J6 คีย์
=IF(OR(I6="",J5=""),"",IF(MOD($I6,2)=0,($P$2*$I6)-COLUMNS($I6:I6)+1,IF(AND(MOD($I6,2)>0,$I6<$P$2),($P$2*$I6)-($P$2-J$5),"")))
ลองดูนะครับ
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 7:40 pm
by yodpao.b
ขอรบกวนเป็นแนวตั้งด้วยครับดังรูปด้านล่าง
Capture1.PNG
ผมลองกับสูตรไปมาก็ไม่ได้ซักที่
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 8:34 pm
by snasui

ปรับสูตรในคอลัมน์ I และ บรรทัดที่ 5 ให้สัมพันธ์กับการเปลี่ยนแกนข้อมูล จากนั้น J6 คีย์สูตรตามด้านล่างครับ
=IF(OR(J$5="",$I6=""),"",IF(ISODD(J$5),$P$2*(COLUMNS($J6:J6)-1)+ROWS(J$6:J6),$P$2*(COLUMNS($J6:J6)-1)-ROWS(J$6:J6)+$P$2+1))
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Aug 21, 2015 8:58 pm
by yodpao.b
ขอบคุณครับสำเร็จแล้วครับ
ที่นี้ก็เหลืออันเคียวคือเขียน VBA เอาไว้แก้ไขค่า
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Thu Sep 10, 2015 10:19 am
by yodpao.b
เรียนอาจารย์
พอเอาไปลองใช้เกิดปัญหานิดหน่อยครับ ในการใช้ excel 2003
ผลที่ได้ จะขึ้น #### ดังรูป
11.JPG
จากสูตร
=IF(OR(J$5="",$I6=""),"",IF(ISODD($I6),$P$2*(ROWS(J$6:J6)-1)+COLUMNS($J6:J6),$P$2*(ROWS(J$6:J6)-1)-COLUMNS($J6:J6)+$P$2+1))
ผลเข้าใจว่าใน excel 2003 ไม่มีสูตร ISODD ครับ
จะแก้ไขอย่างไรครับ
หมายเหตุใช้ excel รุ่น สูงกว่า 2003 ไม่เป็นไรครับ
ขอบคุณครับ
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Thu Sep 10, 2015 10:47 am
by snasui

ต้องใช้ Analysis Toolpak โดยกำหนดตาม link นี้ครับ
https://www.add-ins.com/Analysis_ToolPak.htm
นอกจากนั้นสามารถจะปรับเป็นฟังก์ชั่น Mod เข้ามาช่วยแทน Isodd ได้เช่นกัน ลองปรับมาเองก่อน ติดแล้วค่อยถามกันต่อครับ
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Thu Sep 10, 2015 12:34 pm
by yodpao.b
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Sep 11, 2015 8:32 pm
by ZEROV
ผมลองทำแบบนี้ครับ
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Fri Sep 11, 2015 8:42 pm
by snasui

ควรใช้ Rows แทน Row และ Columns แทน Column เพื่อให้สูตรมีความมั่นคงต่อการแทรกคอลัมน์และแทรกบรรทัดครับ
ตามสูตรในภาพ หากแทรกบรรทัดที่ 1 หรือแทรกคอลัมน์ A จะทำให้สูตรแสดงผลไม่ถูกต้องครับ
Re: สอบทราบการเรียงลำดับตัวเลข
Posted: Sat Sep 12, 2015 9:50 am
by ZEROV
snasui wrote:
ควรใช้ Rows แทน Row และ Columns แทน Column เพื่อให้สูตรมีความมั่นคงต่อการแทรกคอลัมน์และแทรกบรรทัดครับ
ตามสูตรในภาพ หากแทรกบรรทัดที่ 1 หรือแทรกคอลัมน์ A จะทำให้สูตรแสดงผลไม่ถูกต้องครับ
ขอบคุณครับ
สำหรับผมเอง Rows(),columns() เป็นฟังชันที่ถูกลืมเนื่องจากใช้งานน้อยมากๆ
ทั้งๆที่ฟังชันทั้งสองสามารถสร้างชุด Serial Numbers ได้เป็นอย่างดี
ดังนั้นต้องขอแก้สูตรเป็น
D4=IF(MOD(ROWS($D$4:D4),2)=1,D3+1,D3+$A$1*2-1)*(ROWS($D$4:D4)<=$A$2)
E4=(D4+INDEX({1,-1},NOT(MOD(ROWS($E$4:E4),2))+1))*(COLUMNS($E$4:E4)<$A$1)*(ROWS($E$4:E4)<=$A$2)