Page 1 of 2
การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 1:32 pm
by jeethada
รบกวนอาจารย์ เกี่ยวกับ การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว ด้วยครับ
Column A คือ ข้อมูลระดับ สาขา ที่มีทั้ง ภาษาไทย และ อังกฤษ ผสมกัน และเนื่องจากเป็น source ต่างที่มา จึงมี format ที่หลากหลาย
Coumn B คือ ผลลัพธ์ ที่ต้องการให้แสดงเป็นชื่อรูปแบบของ จังหวัด
ข้อสังเกตุ HL เหลือง คือ รายละเอียด ใน Column A มีทั้งการใช้จังหวัดที่ต่อท้าย หรือ ไม่ก็ลงท้าย
ข้อสังเกตุ HL เขียว คือ รายละเอียด ใน Column A แสดงเป็นชื่อระดับ เขต แต่ต้องการ แปลงให้เป็นข้อมูล ระดับ จังหวัด
อยากสอบถามอาจารย์ ว่ามีสูตร "IF ที่สามารถเช็ค wording ได้ทั้ง ประโยค ?
เช่น ถ้าใน A1 มีข้อความ (%อุดร%อุดรธานีฯ%UDORNTANE%UDORNTHANI) ใน B1 ให้เท่ากับ UDORNTHANI เป็นต้น
ขอบคุณครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 1:35 pm
by jeethada
หรือ หากไม่ใช้ IF ควรเป็นวิธีการไหน ครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 1:40 pm
by snasui
มีฐานข้อมูลที่ระบุว่าสาขาใดอยู่จังหวัดไหน
หรือไม่ครับ
เช่นตามด้านล่าง หากมีให้แนบมาด้วยครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 2:50 pm
by jeethada
ไม่มี ครับ อาจารย์
เพราะจากไฟล์งาน ที่แนบให้ เป็นลักษณะของข้อมูลจาก ที่ได้รับ จาก บริษัทฯ ภายนอก หลาย ๆ บริษัท ก็เลย มาหลากหลาย รูปแบบ
ทั้งนี้ ทางผมเคยแจ้งขอ ให้มีการแยกแยะ ข้อมูล ระดับ จังหวัด มาให้ด้วย ก็จะีมีบางบริษัท ที่มีการจัดเก็บ ระบบ ฐานข้อมูล ดีหน่อย ก็จะมีส่งมาให้ด้วย
แต่... ส่วนใหญ่ที่ส่งมา จะเป็นแบบในไฟล์ที่แนบไป ครับ
ผมเคยลองคิดว่าจะใ้ช้ SUBSTITUE ในการจัดการ ตัดพวก space , special character , เพื่อที่จะได้สามารถ ควบคุม format
ที่หลากหลายนี้ แล้วจัดเก็บ เก็บ DB เพื่อทำ VL สำหรับข้อมูลในครั้งหน้า แต่ก็ไม่รู้ว่าจะถึกไป ?
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:00 pm
by snasui

กรณีไม่มีฐานข้อมูลมาเทียบจะลำบากในการที่จะใช้สูตรดึงค่าออกมาให้เป็นจังหวัด ผมคิดเร็ว ๆ พบว่าไม่น่าจะมีสูตรใดที่จะทำเช่นนั้นได้ เพราะมันจะยาวจนเกินข้อจำกัดของสูตร เนื่องจากสูตรมีความยาวได้แค่ 8,192 อักขระ ใน Excel 2007 ขึ้นไป และยาวได้เพียง 1,024 อักขระใน 2003 ลงไป
เมื่อเป็นเช่นนั้น ให้เริ่มทำฐานข้อมูลไว้เองดีกว่าครับ ตามลักษณะที่แนะนำไปแล้วในความเห็นก่อน จากนั้นจึงค่อยใช้สูตรดึงออกมาได้ ส่วนจะดึงออกมาได้แค่ไหนก็แล้วแต่ว่าฐานข้อมูลของเราครอบคลุมแค่ไหนครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:03 pm
by jeethada
ผมเคยลองคิดว่าจะใ้ช้ SUBSTITUE ในการจัดการ ตัดพวก space , special character , เพื่อที่จะได้สามารถ ควบคุม format
ที่หลากหลายนี้ แล้วจัดเก็บ เก็บ DB เพื่อทำ VL สำหรับข้อมูลในครั้งหน้า แต่ก็ไม่รู้ว่าจะถึกไป ?
ขยายความเผื่ออาจารย์ งง คือ จะทำข้อมูลที่ได้รับมาให้เป็น UNIQUE KEY เพื่อ VL ในครั้งหน้า ครับ
ซึ่งหากมีสูตร IF อย่างที่ผมเสนอไป ผมยินดี ที่จะเหนื่อยสุด ๆ ในรอบแรก ๆ เพื่อจัดทำรูปแแบบ อันหลากหลาย
แล้วคอย เพิ่มเติมในส่วนที่เป็น Error record ภายหลัง ... ว่าแต่การใช้ if & if ต่อไป เรื่อย ๆ จะได้ไม่เกินกี่รอบ ? ครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:08 pm
by snasui

Excel 2007 ขึ้นไปซ้อนได้ 64 ชั้นครับ ส่วน 2003 ลงไปซ้อนได้ 7 ชั้น
ขอบคุณที่ขยายความ เพื่อเพื่อน ๆ จะได้เข้าใจง่ายขึ้น สำหรับผมแล้ว ถ้าไม่เข้าใจผมจะถามเลยครับ

Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:10 pm
by jeethada

อยาให้ นายผม มาเห็น Post นี้จัง จะได้ทราบว่าผม พยายาม แล้วนะ
ผมคิดเร็ว ๆ พบว่าไม่น่าจะมีสูตรใดที่จะทำเช่นนั้นได้ เพราะมันจะยาวจนเกินข้อจำกัดของสูตร เนื่องจากสูตรมีความยาวได้แค่ 8,192 อักขระ ใน Excel 2007 ขึ้นไป และยาวได้เพียง 1,024 อักขระใน 2003 ลงไป
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:12 pm
by snasui

ส่งอีเมลไปให้เจ้านายได้เลยครับ ถ้าต้องการจะแปลงเลยโดยไม่มีข้อมูลมาเทียบ ผมบอกได้เลยว่า
ไม่ง่ายครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:22 pm
by jeethada
ของผมเป็น excel version 2003 ครับ
รบกวน อาจารย์ ช่วยขึ้นต้นสูตร สูตร IF ไม่เกิน 7 รอบ กับกรณี ด้านล่าง ให้ด้วย ได้ไหมครับ
ผมอาจะ adap กับ RIGHT แล้วลองดู ว่าต้องทำกี่รอบ รบกวน ด้วยครับ
อยากสอบถามอาจารย์ ว่ามีสูตร "IF ที่สามารถเช็ค wording ได้ทั้ง ประโยค ?
เช่น ถ้าใน A1 มีข้อความ (%อุดร%อุดรธานีฯ%UDORNTANE%UDORNTHANI) ใน B1 ให้เท่ากับ UDORNTHANI เป็นต้น
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:29 pm
by snasui

ตัวอย่างของการใช้ If ด้านล่างครับ
=If(Or(Isnumber(Search("อุดร",A1)),Isnumber(Search("อุดรธานี",A1)),Isnumber(Search("Udornthane",A1)),Isnumber(Search("Udornthani",A1))),"UDORNTHANI","")
Enter แต่ผมคิดว่ากำลังจะเลือกทำในสิ่งที่มันไม่ประหยัดเวลาอยู่นะครับ นี่แค่จังหวัดเดียว ถ้า 76 จังหวัดล่ะครับ

Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 3:40 pm
by jeethada
snasui wrote:
ตัวอย่างของการใช้ If ด้านล่างครับ
=If(Or(Isnumber(Search("อุดร",A1)),Isnumber(Search("อุดรธานี",A1)),Isnumber(Search("Udornthane",A1)),Isnumber(Search("Udornthani",A1))),"UDORNTHANI","")
Enter แต่ผมคิดว่ากำลังจะเลือกทำในสิ่งที่มันไม่ประหยัดเวลาอยู่นะครับ นี่แค่จังหวัดเดียว ถ้า 76 จังหวัดล่ะครับ

+1
เหมือนเอา ส้อม ตัก น้ำซุป ... กว่าจะหมด

Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 4:54 pm
by jeethada
jeethada wrote:snasui wrote:
ตัวอย่างของการใช้ If ด้านล่างครับ
=If(Or(Isnumber(Search("อุดร",A1)),Isnumber(Search("อุดรธานี",A1)),Isnumber(Search("Udornthane",A1)),Isnumber(Search("Udornthani",A1))),"UDORNTHANI","")
Enter แต่ผมคิดว่ากำลังจะเลือกทำในสิ่งที่มันไม่ประหยัดเวลาอยู่นะครับ นี่แค่จังหวัดเดียว ถ้า 76 จังหวัดล่ะครับ

+1
เหมือนเอา ส้อม ตัก น้ำซุป ... กว่าจะหมด

ขอบคุณนะครับ อาจารย์ ที่เสียสละ เวลา ... อย่างน้อย ก็ยังมี ตรรกะ ไปแย้ง กับนายได้ ว่าข้อมูลแบบนี้ต้องใช้ ระยะเวลา ครับ

Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 5:28 pm
by odd
ใช้ Select Case น่าจะได้ครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 5:47 pm
by jeethada
odd wrote:ใช้ Select Case น่าจะได้ครับ
ยังไงครับ คุณ odd ฝากขยายความ นิดนึงครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 7:39 pm
by odd
ตัวอย่าง : ถ้าใน A1 มีข้อความ (%อุดร%อุดรธานีฯ%UDORNTANE%UDORNTHANI) ใน B1 ให้เท่ากับ UDORNTHANI
ทดลองใช้ VBA
Sub Province()
Select Case Range("a1")
Case Is = "%อุดร%อุดรธานีฯ%UDORNTANE%UDORNTHANI"
Range("B1") = "UDORNTHANI"
End Select
Range("b1").Select
End Sub
แต่คุณแยกข้อมูลแต่ละจังหวัดว่าส่งข้อมูลในลักษณะไหนและให้ส่งข้อมูลลักษณะนั้นตลอดไป เพื่อไม่แก้ไข Code VBA ทุกครั้ง
และ ค้นหาวีธีใช้ Do Until Select Case ใน Google ดูครับ (ผมก็กำลังศึกษาวิธีใช้

)
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 8:14 pm
by jeethada
odd wrote:ตัวอย่าง : ถ้าใน A1 มีข้อความ (%อุดร%อุดรธานีฯ%UDORNTANE%UDORNTHANI) ใน B1 ให้เท่ากับ UDORNTHANI
ทดลองใช้ VBA
Sub Province()
Select Case Range("a1")
Case Is = "%อุดร%อุดรธานีฯ%UDORNTANE%UDORNTHANI"
Range("B1") = "UDORNTHANI"
End Select
Range("b1").Select
End Sub
แต่คุณแยกข้อมูลแต่ละจังหวัดว่าส่งข้อมูลในลักษณะไหนและให้ส่งข้อมูลลักษณะนั้นตลอดไป เพื่อไม่แก้ไข Code VBA ทุกครั้ง
และ ค้นหาวีธีใช้ Do Until Select Case ใน Google ดูครับ (ผมก็กำลังศึกษาวิธีใช้

)
ขอบคุณครับ จะลองศึกษา ต่อตามที่แจ้งครับ
Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 8:17 pm
by snasui

ถึงจะหันไปใช้ VBA ก็ไม่ง่ายครับ
ขอขยายความให้เพื่อน ๆ เข้าใจอีกสักนิด จากที่คุณ jeethada ถามมานั้นเป็นการหาในลักษณะนี้ครับ
หากใน A1
มีค่าด้านล่างนี้รวมอยู่ด้วย ให้แสดงผลลัพธ์ที่ B1 เป็นอุดรธานี
- อุดร
- อุดรธานี
- UDORNTHANE
- UDORNTHANI
และนี่เป็นแค่จังหวัดเดียว หากหาทั้ง 77 จังหวัดในประเทศไทยคงจะเขียน Case Is กัน 77*4 = 231 บรรทัด

Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 8:31 pm
by jeethada
snasui wrote:
ถึงจะหันไปใช้ VBA ก็ไม่ง่ายครับ
ขอขยายความให้เพื่อน ๆ เข้าใจอีกสักนิด จากที่คุณ jeethada ถามมานั้นเป็นการหาในลักษณะนี้ครับ
หากใน A1
มีค่าด้านล่างนี้รวมอยู่ด้วย ให้แสดงผลลัพธ์ที่ B1 เป็นอุดรธานี
- อุดร
- อุดรธานี
- UDORNTHANE
- UDORNTHANI
และนี่เป็นแค่จังหวัดเดียว หากหาทั้ง 77 จังหวัดในประเทศไทยคงจะเขียน Case Is กัน 77*4 = 231 บรรทัด


ถ้าเขียนได้วันละ 7 - 8 ตัว ก็ประมาณ เดือนนึง ถ้ายึดตามสมมติฐานของอาจารย์นะ ( มองโลกในแง่ดี )

Re: การจัดการข้่อมูลต่างที่มา ที่ไม่มีรูปแบบตายตัว.XLS
Posted: Sun Mar 18, 2012 10:48 pm
by tupthai
ต้องเพิ่ม case ของแต่ละจังหวัดเองนะครับ
เยอะมาก
B2=INDEX($D$1:$I$1,MAX(IF(ISNUMBER(SEARCH($D$1:$I$8,A2)),COLUMN($D$1:$I$8)))-3)
Ctrl+Shift+Enter
copy ลงด้านล่าง