รบกวนแนะนำวิธีแยกข้อความครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,926   4
URL.หัวข้อ / URL
รบกวนแนะนำวิธีแยกข้อความครับ

ผมมีข้อมูลแบบนี้อยู่ใน DB ครับเลยใช้ access มาเพื่อต้องการทำ Report ครับ แต่ติดปัญหาตรงที่ว่า

ข้อมูลที่ได้มาเป็นแบบนี้ครับ
รายการที่1;ผลรายการที่1|รายการที่2;ผลรายการที่2|รายการที่3;ผลรายการที่3|รายการที่4;ผลรายการที่4|

โดยที่ | เป็นตัวแยกข้อมูลเป็นชุดๆครับ และ ; เป็นตัวแยกของชื่อกับผลครับ รบกวนแนะนำครับ หากเราต้องการให้แยกแต่ละอันต้องทำอย่างไรครับ รบกวนด้วยครับ


4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R06339
ลองแบบนี้ดูนะครับ ผมใช้บ่อย
Copy ข้อมูลไป Excel 2007 หรือ 2010 แล้ว
เลือกที่แทป ข้อมูล แล้วเลือกตรง ข้อความเป็นคลอลัมน์
แล้ว เลือกตัวคั่นนะครับ คงต้องทำ 2 ครั้งเพราะ มีตัวคั่น 2 ชนิด
แล้วค่อย copy กลับมาใน Access
2 @R06345
เข้าใจว่าข้อมูลที่ยกตัวอย่างมานี้ อยู่ในฟิลด์ 1 ฟิลด์ใช่ไหม ถ้าใช่ และจำนวนชุดข้อมูลคงที่ ก็ใช้ฟังก์ชั่น Replace( ) เพื่อแปลงให้ ; เป็น | เสียก่อน (หรือกลับกันก็ได้) แล้วใช้ Split( ) เพื่อดึงข้อความส่วนที่ต้องการออกมา เช่น สมมุติข้อมูลอยู่ในฟิลด์ชื่อว่า strResult

เมื่อจะดึงเอา "รายการที่1" ออกมา ก็จะได้ฟังก์ชั่นว่า Split(Replace(strResult,";","|"),"|")(0)   

ถ้าจะดึง "ผลรายการที่1" ออกมา ก็ใช้ Split(Replace(strResult,";","|"),"|")(1)       
...
...
...
จะดึง "ผลรายการที่4" ออกมา ก็ใช้ Split(Replace(strResult,";","|"),"|")(6)       

จะดึง "รายการที่4" ออกมา ก็ใช้ Split(Replace(strResult,";","|"),"|")(7)       
3 @R06346
หรือไม่ก็ใช้ Split( ) ซ้อนกัน 2 ครั้ง ครั้งแรกเรา Split( ) ด้วย "|" เพื่อหา "ชุดที่" ครั้งที่สองเรา Split( ) ด้วย ";" เพื่อหา "ผลรายการที่x " (ใช้วงเล็บ 0) หรือ "รายการที่x " (ใช้วงเล็บ 1)

จะดึง "ผลรายการที่4" ออกมา ก็ใช้ Split(Split(strResult,"|")(3),";")(0)      

จะดึง "รายการที่4" ออกมา ก็ใช้ Split(Split(strResult,"|")(3),";")(1)    

เลขชุดที่ (สีน้ำเงิน) จะน้อยกว่าเลขที่เราต้องการอยู่ 1 เสมอ
4 @R06347
Split ใช้อย่างนี้นี่เอง ขอบคุณครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3072s