เอ็กเซล
กับ การแยกข้อความในคอลัมน์เดียวกัน ไปวางในคอลัมน์อื่น
อ่านแค่หัวข้ออาจจะงง
ๆ ไม่เป็นไรครับ เดี่ยวจะอธิบายให้กระจ่าง..การแยกข้อความออกเป็นส่วนๆ เอ็กเซล
เรียกว่าการ split ครับ
ซึ่งก็สามารถทำได้ 2 วิธครับ
ถ้าเป็น เอ็กเซล รุ่นเก่าๆ อาจจะไม่มีตัวช่วย คงต้องพึงพา การเขียนโปรแกรม
หรือเขียนมาโคร แต่ถ้าใครใช้ Excel เวอร์ชั่นสูง ๆขึ้นมาหน่อย ก็มีตัวช่วยแน่นอน
อย่างเช่น เอ็กเซล เวอร์ชั่น 2019 ที่ผมใช้อยู่นี้..ใครยังไม่มีเอ็กเซลเวอร์ชั่นล่าสุดก็หาดาวน์โหลดได้ครับ
มีแจกเพียบ แต่ไม่ชี้แหล่งดาวน์โหลดน่ะครับ เผื่อ url มันมีการเปลี่ยนแปลง..
มาเข้าเรื่องกันดีกว่า การแยกข้อความซึ่งอยู่ในบรรทัดเดียวกัน
ในคอลัมมน์เดียวกัน
แล้วไปวางในคอลัมน์อื่นนั้น สามารถทำได้ง่ายมากๆ ผ่านแท็บ Data โดยใช้
Text to Colums Wizard หรือผู้ช่วยในการแยกข้อความออกไปวางที่คอลัมน์อื่นนั่นเอง เรามาศึกษาผ่านตัวอย่างนี้กันดีกว่า
1.
ให้เราพิมพ์ข้อมูลที่เซลล์
A1:A6 ดังภาพด้านล่างนี้
2. ใช้เม้าส์เลือกข้อความตั้งแต่เซลล์
A1:A6 จากนั้นคลิ้กที่
แท็บ Data ตามภาพด้านล่างนี้
3.จากนั้นคลิ้กที่
Text to Columns ดังภาพด้านล่างนี้เลยครับ
4. กล่อง Convert Text to Columns Wizard ใน Step 1 จะปรากฏขึ้นมา
ให้เราคลิ้กเลือกที่ Delimited
แล้วคลิ้กที่
Next
5. กล่อง Convert Text to Columns Wizard ใน Step 2 จะปรากฏขึ้นมา ให้เราติ๊กถูกหน้า
Comma เนื่องจากข้อความที่เราต้องการแยกออกจากกันถูกคั่นด้วย
Comma (,) จากนั้นคลิ้กที่
Next ดังภาพด้านล่างนี้
6. กล่อง Convert Text to Columns Wizard ใน Step 3 จะปรากฏขึ้นมา ให้คลิ้กเลือกที่
Text เนื่องจากสิ่งที่เราจะแยกออกจากกันคือข้อมูลชนิดข้อความอย่างเดียว
จากนั้นคลิ้ก Finish
ตามภาพด้านล่างนี้เลยครับ
7. ผลลัพธ์ที่ได้คือ
ข้อความในคอลัมน์ A แต่ละเซลล์จะแยกออกจากกัน
และถูกนำไปวางในคอลัมน์ถัดไปนั่นคือคอลัมน์ B แบบอัตโนมัติ โดยเอ็กเซล
แยกข้อความในคอลัมน์ A โดยพิจารณาจากเครื่องหมาย
Comma (,) ดังภาพด้านล่างนี้
ขออธิบายเพิ่มเติมในส่วนของหน้าจอ Covert Text to Columns Wizard – Step
2 of 3 น่ะครับ จะเห็นว่าในส่วนของ Delimiters มีให้เลือกอยู่
หลายอัน เช่น Tab,
Semicolon,Comma, Space, Other: เป็นต้น
Tab คือ
ให้เอ็กเซล แยกข้อความออกจากกันโดยพิจารณาว่า ข้อความนั้นถูกคั่น
หรือเว้นวรรคด้วยเครื่องหมายแท็บหรือไม่
เอ็กเซลจะตรวจสอบและแยกข้อความออกโดยพิจารณาว่ามีการเว้นวรรคด้วยแท็บด้วยหรือไม่
Semicolon คือ
ให้เอ็กเซล แยกข้อความออกจากกันโดยพิจารณาจากเครื่องหมาย Semicolon หรือ เครื่องหมาย;
Comma คือ
ให้เอ็กเซล แยกข้อความออกจากกันโดยพิจารณาจากเครื่องหมาย Comma หรือ เครื่องหมาย, (ตามตัวอย่างที่แสดงให้ดู)
Space คือ
ให้เอ็กเซล
แยกข้อความออกจากกันโดยพิจารณาว่าในข้อความนั้นถูกเว้นวรรคด้วยช่องว่างหรือไม่
ช่องว่างที่เกิดจาการกด spacebar
หรือ tab
Other: ถ้าเลือกที่ตัวเลือกนี้
หมายความว่า ให้เรากำหนดตัวแบ่งแยกข้อความด้วยตนเอง กำหนดได้ในช่องขาวๆที่เอ็กเซล
มีมาให้ได้เลย ข้อความเราคั่นด้วยสัญลักษณ์อะไร ก็ลองเอามาใส่ดูครับ ดูภาพด้านล่างประกอบครับ
อธิบายเพิ่มเติมสำหรับในส่วนของหน้าจอ Covert Text to Columns Wizard – Step
3 of 3 ซึ่งมีรายละเอียดดังนี้ครับ
ในส่วน Column data format จะประกอบไปด้วย
General,Text,Date,Do not
import column (skip)
General คือ
เอ็กเซล สามารถแยกได้ทั้งข้อความ ตัวเลข วันที่ ฯลฯ ไปเป็นชนิดข้อมูลทั่วไปได้
(จากตัวเลขไปเป็นตัวเลข, จากข้อความไปเป็นตัวเลข, จากข้อมูลวันที่ไปเป็นวันที่
หรือแม้แต่แปลงจากข้อความไปเป็นตัวเลขก็ได้เช่นกัน จากที่เรายกตัวอย่างมา
เราเลือกที่ Text เพราะเซลล์ที่เราจะแปลง
เป็นข้อความทั้งหมด แต่เราสามารถเลือกเป็น General ได้เช่นกัน
เพราะ
อย่างที่กล่าวมาเอ็กเซลสามารถรับรู้ได้ว่าข้อความที่เราจะแยกไปไว้คอลัมน์อื่นเป็นชนิดใด
(เมื่อเลือกแบบ General)
Text คือ
ข้อความที่เราจะแยกออกจากกันและไปวางในคอลัมน์ใหม่ เป็นข้อความ
Date ข้อความที่เราจะทำการแยกเป็นชนิดวันที่
Do not
import column (skip) ถ้าเลือกที่ตัวเลือกนี้
เอ็กเซลจะวางข้อความที่ตัดที่อยู่หลัง Comma ไว้ในคอลัมน์เดียวกัน
วางไว้ใน Column a ผลก็คือ
คำที่อยู่ข้างหน้า Comma จะหายไป
(เหลือแค่คอลัมน์เดียว) ดังภาพด้านล่างนี้
เมื่อกด Finish จะได้ผลลัพธ์ดังภาพด้านล่างนี้
อีกวิธีหนึ่งคือ ใช้ vba หรือ visual basic for application ที่มาพร้อมกับ
Microsoft office ครับ
โดยการใช้ฟังก์ชั่น split (ฟังก์ชั่นแยกข้อความ)
ก็มีความยืดหยุ่นไม่แพ้กันครับ โดยเราอาจจะแยกข้อความด้วยฟังก์ชั่น split แล้วไปเก็บไว้ในตัวแปรแบบ
array ก็ได้ครับ
แล้วก็ดึงข้อความที่ถูกแยกเก็บในตัวแปร array มาแสดงที่คอลัมน์
แถว หรือที่เซลล์ที่เราต้องการ
วิธีการใช้คำสั่ง split ในการแยกข้อความออกจากกัน
ทำได้ดังนี้
1. ที่เอ็กเซล
ให้คลิ้กที่แท็บ Developer
จากนั้นคลิ้กที่
insert ในส่วน
Activex Controls ให้คลิ้กเลือก
CommandButton มาวางบน
sheet ที่เราทำงานอยู่
2. ดับเบิ้ลคลิ้กที่
CommandButton แล้วเขียนโค้ด
ต่อไปนี้ลงไป
Dim Mystring
As String
Dim MyArray()
As String
MyString =
"ฉันรักการเขียนโปรแกรม,มันสร้างรายได้ให้ฉันมาก"
MyArray =
Split(MyString, ",")
Range(“a10”).value=MyArray(0)
Range(“a11”).value=
MyArray(1)
คำอธิบาย
ประกาศตัวแปร Mystring เพื่อเก็บข้อความที่เราต้องการนำมาแยก
ประกาศตัวแปร Myarray เพื่อเก็บข้อความที่แยกแล้ว
(แยกโดยฟังก์ชั่น split) เก็บไว้ในช่อง
Array แบบข้อความ
...
เอ็กเซล จะสร้าง Array เท่ากับ
ขนาดของข้อมูลชนิด String
(ชนิดข้อความใน Microsoft Excel) ซึ่งเก็บได้หลายช่อง
กำหนดค่าให้กับตัวแปร MyString = "ฉันรักการเขียนโปรแกรม,มันสร้างรายได้ให้ฉันมาก"
ข้อความถูกแบ่งแยกด้วยเครื่องหมาย Comma (,)
ทำการแยกข้อความที่อยู่ในตัวแปร Mystring ด้วยฟังก์ชั่น
Split
รูปแบบโครงสร้างของฟังก์ชั่น Split คือ Split(ข้อความที่ต้องการแยก, ตัวแบ่งแยก
หรือเรียกว่า Delimiters)
ข้อความที่ต้องการแยก
ในตัวอย่างนี้คือ ตัวแปร Mystring
ซึ่งเก็บค่า
ฉันรักการเขียนโปรแกรม,มันสร้างรายได้ให้ฉันมาก
ซึ่งเราต้องใส่เครื่องหมายครอบด้วย เพราะเป็นไวยากรณ์ของฟังก์ชั่น split
ตัวแบ่งแยก เช่น comman (,) ,semicolon, space, tab, อื่น ๆ
เช่นเดียวกับตัวอย่างแรกที่เราใช้ wizard ของเอ็กเซลทำให้
ในตัวอย่างนี้เราใช้ ตัวแบ่งแยก (Delimiters)
โดยให้ฟังก์ชั่น Split แยกแล้วเก็บไว้ใน
ตัวแปรแบบ Array นั่นคือ
เก็บในตัแปร Myarray ดังนี้
MyArray =
Split(MyString, ",")
ผลลัพธ์คือ ตัวแปร Myarray จะเก็บค่าแยกไว้แต่ละช่อง
(Array คือตัวแปรแบบช่อง)
ในตัวอย่างนี้ แยกข้อความแล้วได้แค่ 2 ช่อง คือ Myarray(0) และ Myarray(1)
MyArray(0) =
ฉันรักการเขียนโปรแกรม
Myarray(1)= มันสร้างรายได้ให้ฉันมาก
Range(“a10”).value=MyArray(0)
Range(“a11”).value=
MyArray(1)
2 บรรทัดบนนี้
คือ นำค่าที่แยกแล้ว ไปแสดงที่ เซลล์ A10 และ เซลล์ A11 ตามลำดับ
3. ทดสอบการทำงานของโปรแกรมโดยการกดปุ่ม
Alt+F11 เพื่อกลับมาที่
Excel แล้วไปที่แท็บ
Developer กดที่ Design Mode ให้เด้งขึ้นมา
ให้อยู่ในสถานะรันโปรแกรม (โปรแกรมพร้อมทำงาน) จากนั้นกดที่ปุ่ม
CommandButton1 ที่เราวางไว้บน
Sheet เพื่อสั่งให้โปรแกรมทำงาน
ให้สังเกตุผลลัพธ์ที่เซลล์ A10, และ เซลล์ A11
ถ้าปุ่ม Design Mode ยุบอยู่
หมายถึงอยู่ในโหมดแก้ไข เราจะกดปุ่ม CommandButton สั่งงานให้ทำงานโค้ดโปรแกรมที่เราเขียนไม่ได้
ต้องกดให้มันเด้งขึ้นมาก่อน










ไม่มีความคิดเห็น:
แสดงความคิดเห็น