กระทู้เก่าบอร์ด อ.Yeadram
1,923 4
URL.หัวข้อ /
URL
รบกวนแนะนำวิธีแยกข้อความครับ
ผมมีข้อมูลแบบนี้อยู่ใน DB ครับเลยใช้ access มาเพื่อต้องการทำ Report ครับ แต่ติดปัญหาตรงที่ว่า
ข้อมูลที่ได้มาเป็นแบบนี้ครับ
รายการที่1;ผลรายการที่1|รายการที่2;ผลรายการที่2|รายการที่3;ผลรายการที่3|รายการที่4;ผลรายการที่4|
โดยที่ | เป็นตัวแยกข้อมูลเป็นชุดๆครับ และ ; เป็นตัวแยกของชื่อกับผลครับ รบกวนแนะนำครับ หากเราต้องการให้แยกแต่ละอันต้องทำอย่างไรครับ รบกวนด้วยครับ
ข้อมูลที่ได้มาเป็นแบบนี้ครับ
รายการที่1;ผลรายการที่1|รายการที่2;ผลรายการที่2|รายการที่3;ผลรายการที่3|รายการที่4;ผลรายการที่4|
โดยที่ | เป็นตัวแยกข้อมูลเป็นชุดๆครับ และ ; เป็นตัวแยกของชื่อกับผลครับ รบกวนแนะนำครับ หากเราต้องการให้แยกแต่ละอันต้องทำอย่างไรครับ รบกวนด้วยครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
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)
เมื่อจะดึงเอา "รายการที่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" ออกมา ก็ใช้ Split(Split(strResult,"|")(3),";")(0)
จะดึง "รายการที่4" ออกมา ก็ใช้ Split(Split(strResult,"|")(3),";")(1)
เลขชุดที่ (สีน้ำเงิน) จะน้อยกว่าเลขที่เราต้องการอยู่ 1 เสมอ
4 @R06347
Split ใช้อย่างนี้นี่เอง ขอบคุณครับ
Time: 0.3802s
Copy ข้อมูลไป Excel 2007 หรือ 2010 แล้ว
เลือกที่แทป ข้อมูล แล้วเลือกตรง ข้อความเป็นคลอลัมน์
แล้ว เลือกตัวคั่นนะครับ คงต้องทำ 2 ครั้งเพราะ มีตัวคั่น 2 ชนิด
แล้วค่อย copy กลับมาใน Access