เมื่อต้องการเลือกข้อมูล หรือจัดกลุ่มข้อมูลที่เป็นข้อความ ยาวๆ ซับซ้อน ก็ต้องคิดถึงการใช้ Regular Expression ซึ่งใช้งานได้ทั่วไปใน Shell Script ต่างๆ แต่เมื่อต้องทำสิ่งเหล่านี้ใน Excel นั้น ค่อนข้างยุ่งยาก แล้วในที่สุด ก็ไปพบคนใจดี เขียน VBS มาให้ ตามไฟล์นี้ regexp.txt ให้ใช้งาน Regular Express แบบเป็น Formula ง่ายๆ
วิธีการใช้ติดตั้งใช้งาน
- Download ไฟล์ข้างต้นไป แล้วแก้เป็นนามสกุล .bas
- เปิด Excel แล้วกดปุ่ม Alt-F11
- ไปที่ File > Import File แล้วเลือกไฟล์ .bas ข้างต้น
- ผลคือ จะได้ Module ชื่อ regexp
- ใน Excel ตั้งแต่ 2007 เป็นต้นไป จะไม่ยอมให้ Excel ใช้งานพวก Macro ต่างๆได้ ดังนั้น ให้ Save เป็นนามสกุล .xlsm จึงจะใช้งานต่อไปได้
ใน Module นี้ จะได้ฟังก์ชั่นมา 3 อย่างคือ
- RegExp : หาว่าใน String นั้นมี Pattern ที่ค้นหาหรือไม่
- RegReplace: แทนที่คำที่ค้นหา
- RegExtract: แกะเอาเฉพาะ pattern ที่ต้องการออกมา
ตัวอย่างที่ใช้งานจริง คือการแกะเอา Parameter บางอย่าง จาก URL ที่เก็บมา เพื่อเอาไปประมวลผลต่อด้วย PSPP หรือ SPSS
สมมุติใน Cell “A1” มี URL ดังนี้
/webmail/src/right_main.php?PG_SHOWALL=0&newsort=0&startMessage=1&mailbox=INBOX |
ใน Cell “B1” ต้องการดูว่า newsort ตั้งค่าเป็นอะไร ก็เขียนสูตรว่า
=RegExExtract(“.*newsort=([0-9])&.*”,A1,”$1″)
ผลที่ได้คือ 0
หรือ Cell “C1” ต้องการดูค่าว่า mailbox ตั้งค่าอะไรอยู่ ก็ใช้สูตรว่า
=RegExExtract(“.*mailbox=([a-zA-Z0-9._-]*)&.*”,A1,”$1″)
Reference
http://stackoverflow.com/questions/4556910/how-do-i-get-regex-support-in-excel-via-a-function-or-custom-function