เนื่องจากคุณระบุคำสำคัญที่ต้องการค้นหา เราจึงสามารถค้นหาคำสำคัญเหล่านั้น จากนั้นจึงค้นหาตัวคั่นที่เกี่ยวข้องตามตัวอย่างของคุณ
ในตัวอย่างของคุณ أمانة
ตามด้วยเครื่องหมายขีดกลาง และ بلدية
ตามด้วยเครื่องหมายทับ (ตามด้วย อยู่ในรูปของการวางแนวคำภาษาอาหรับจากขวาไปซ้าย)
ลองสิ่งนี้:
Col1: =MID(A1,FIND("أمانة",A1),FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),LEN(A1) - LEN(SUBSTITUTE(A1,"-",""))))-FIND("أمانة",A1))
Col2: =MID(A1,FIND("بلدية",A1),FIND(CHAR(1),SUBSTITUTE(A1,"/",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))-FIND("بلدية",A1))
Col3: =TRIM(RIGHT(SUBSTITUTE(A1,".",REPT(" ",99)),99))
หากไม่พบคำสำคัญ สูตรจะส่งกลับข้อผิดพลาด ดังนั้นคุณเพียงแค่ "ตัด" สูตรใน IFERROR
เพื่อให้คืนค่าเป็นค่าว่างหากไม่มีคำสำคัญอยู่
แก้ไข:
สมุดงานจริงไม่มีรูปแบบเดียวกันกับตัวอย่างที่คุณโพสต์ โดยเฉพาะอย่างยิ่ง. ลองใช้สิ่งนี้กับข้อมูลคอลัมน์ 2:
=MID(A2,FIND("بلدية",A2),99)
หรือมีการปราบปรามข้อผิดพลาด:
Col1: =IFERROR(MID(A2,FIND("أمانة",A2),FIND("-",A2,FIND("أمانة",A2))-FIND("أمانة",A2)),"")
Col2: =IFERROR(MID(A2,FIND("بلدية",A2),99),"")
และเซลล์ที่ยังคงส่งกลับข้อผิดพลาด #VALUE!
จะไม่มีคำหลักนั้นในบรรทัด
ตัวอย่างเช่น:
A6: //olyservice/GIS-TANSIQ01/Storage/103-أمانة منطقة عسير -أحد رفيدة
ไม่มี بلدية
BTW ดูเหมือนว่าสูตรเหล่านั้นจะใช้ได้กับชีตทั้งคู่ด้วย
แก้ไข2:
เนื่องจากคุณได้โพสต์ตัวอย่างในชีตด้วย หากคุณสามารถนำไปใช้ใน ชีต ได้ คุณสามารถใช้นิพจน์ทั่วไปเพื่อพิจารณาการยุติหลายครั้ง
ในกรณีนั้น คุณจะใช้:
=iferror(REGEXEXTRACT(A2,"(أمانة.*?)\s*(?:[-/\\.]|$)"),"")
or
iferror(REGEXEXTRACT(A2,"(بلدية.*?)\s*(?:[-/\\.\w]|$)"),"")
สำหรับคอลัมน์
regex จะแยกรูปแบบที่ขึ้นต้นด้วยวลีสำคัญ จนถึงตัวสิ้นสุดซึ่งอาจเป็นอักขระใดก็ได้ในชุด -/\.A-Za-z0-9
หรือส่วนท้ายของบรรทัด ดูเหมือนว่าจะครอบคลุมตัวอย่างในแผ่นงานตัวอย่างของคุณ แต่หากมีจุดสิ้นสุดอื่นๆ คุณสามารถเพิ่มลงในลำดับได้
ใน Excel สิ่งนี้จะต้องใช้ VBA UDF เพื่อใช้งานกลไก Regex
![ป้อนคำอธิบายรูปภาพที่นี่](https://i.stack.imgur.com/IE1an.png)
person
Ron Rosenfeld
schedule
07.11.2019