Page 1 of 1
ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Thu Apr 02, 2020 1:58 am
by yodpao.b
ต้องการเรียงลำดับตามแนวนอนครับ ทำอย่างไร
pic3.PNG
จากรูปต้องการให้เรียงดังนี้
ยกตัวอย่าง
EV001 EV002 EV004 EV006 EV008 EV009 EV010 EV011 EV014 EV017 EV018
โดยข้อมูลด้านล่างต้องย้ายตามไปด้วย
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Thu Apr 02, 2020 7:08 am
by norkaz
1) คลุมพื้นที่ คลุมหัวตารางด้วย
2) Data-> Sort -> Options-> Sort left to right -> OK
3) ที่ Sort by เลือกแถว ในที่นี้คือ Row 9
4) ที่ Order เลือก A to Z -> OK
Norkaz
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 1:08 am
by yodpao.b
ขอคุณมากครับ
ทำตามผลที่ได้ตามต้องการครับ
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 2:12 am
by yodpao.b
ผมใช้ มาโครในการเขียน code
pic1.PNG
จากรูปด้านบน
เมื่อรันโคดแล้วพบว่าไฟลข้อมูลที่มีมากกว่า ทำงานไม่ได้ตามที่ต้องการ
ติดปัญหาที่ code แถบสีเหลือง
จะแก้ไขอย่างไรดีครับ ถ้าข้อมูลมีมากบางไฟล์มีไม่ถึง รึอาจมีมากกว่าที่ code กำหนด
code ที่ผิด
Sub Macro_SortField()
Range("D9").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("data_total").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("data_total").Sort.SortFields.Add Key:=Range( _
"D9:AN9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("data_total").Sort
.SetRange Range("D9:AN1293")
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
Range("B7").Select
End Sub
จากไฟล์ที่ให้ไป เมื่อคลิกปุ่มเรียงลำดับแล้ว
ข้อมูลจะทำงานเฉพาะ ด้านบน ส่วน 13 ล่างสุดไม่ทำงานครับ
แนะนำด้วยครับ
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 6:13 am
by snasui

กรุณาโพสต์ Code ให้แสดงรูปแบบข้อความ Code อ่านกฎการใช้บอร์ดข้อ 5 ด้านบนประกอบครับ

Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 1:17 pm
by yodpao.b
Code: Select all
Sub Macro_SortField()
Range("D9").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("data_total").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("data_total").Sort.SortFields.Add Key:=Range( _
"D9:AN9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("data_total").Sort
.SetRange Range("D9:AN1293")
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
Range("B7").Select
End Sub
code อยู่ใน Module1
เมื่อ code ทำงาน แล้ว นั้นถูกต้อง
แต่พอผมเพิ่มจำนวนบรรทัดลงในไฟล์
จะเห็นว่าเมื่อ Run code อีกครั้ง
บรรทัดล่างที่เพิ่มจะไม่ทำงาน
ผมคิดว่าโคดประกาศตำแหน่งจึงทำให้ไม่สามารถไปถึงตำแหน่งบรรทัดสุดท้ายได้
ต้องแก้ไขอย่างไรดีครับ
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 1:29 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
Dim rall As Range
With ActiveSheet
Set rall = .Range("d9").CurrentRegion
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range( _
"D9:AN9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With .Sort
.SetRange rall
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
.Range("B7").Select
End With
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 1:46 pm
by yodpao.b
เม่ื่อคลิกปุ่ม เรียงลำดับ
code ทำงานถึงตำแหน่งซ้ายสุดและล่างสุดแล้วครับ
แต่มันทำงานกับ 2 คอลัมด้านหน้าด้วยมันส่งทั้ง 2 คอลัมไปอยู่หลังสุด
ตั้งการให้ทั้งสองคอลัมอยู่ด้านหน้าที่เดิมครับ
1.PNG
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 1:53 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code
Set rall = .Range("d9").CurrentRegion
Set rall = rall.Offset(0, 2).Resize(, rall.Columns.Count - 2)
.Sort.SortFields.Clear
'Other code
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 2:30 pm
by yodpao.b
โด้ดนี่ผ่านแล้วครับ
แต่ผมแก้ตัวเลขนิดหน่อย
Code: Select all
Set rall = rall.Offset(0, 3).Resize(, rall.Columns.Count - 3)
ขอบคุณมากครับ
Re: ต้องการเรียงลำดับตามแนวนอนครับ
Posted: Sat Apr 04, 2020 3:59 pm
by snasui

แก้ได้ตามสะดวก การเขียน Code ต้องพยายามเรียนรู้เพื่อให้ปรับแก้เองได้ครับ