สูตรค้นหาคำในประโยค

นี่คือตัวอย่างไฟล์ Google ชีต https://docs.google.com/spreadsheets/d/1B0CQyFeqxg2wgYHJpFxLIzw_8Pv067p0cwacWk0Nc4o/edit?usp=sharing

ฉันมีแผ่นงาน Excel ที่ต้องการค้นหาคำภาษาอาหรับและแยกคำเหล่านั้น

ตัวอย่างเช่น ฉันมีข้อมูลดังนี้:

//olyservice/GIS-TANSIQ01/Storage/46-أمانة منطقة عسير -بلدية بللحمر/حدود القري المطلوب اعتمادهاالمعتمد مسمايتها بالوزارة.rar

ฉันกำลังหา:

  • คอลัมน์ที่ 1: امانة منصقة عسير
  • คอลัมน์ที่ 2: بلدية بللحمر
  • คอลัมน์ที่ 3: RAR

หากไม่มีคำ امانة และ بلدية คอลัมน์ต่างๆ ควรเว้นว่างไว้

ฉันลองวิธีการเหล่านี้แล้ว แต่ไม่ประสบความสำเร็จ:

=RIGHT(MID(A2,FIND("-",A2,20)+1,255),25)

และ

=TRIM(MID(SUBSTITUTE(A2,"",REPT(" ",99)),MAX(1,FIND("-",SUBSTITUTE(A2,"",REPT(" ",99)))+21),99))

person Skorpion    schedule 07.11.2019    source แหล่งที่มา
comment
เว็บไซต์นี้ต้องการให้คุณรวมความพยายามของคุณเองด้วย ดู วิธีถาม คำถามด้วย ตัวอย่างที่ทำซ้ำได้น้อยที่สุด   -  person JvdV    schedule 07.11.2019
comment
คำถามของคุณไม่ชัดเจนสำหรับฉันเนื่องจากดูเหมือนว่าจะมีคำภาษาอาหรับสิบคำ คุณกำลังมองหาคำที่เฉพาะเจาะจงหรือไม่? คำในสถานที่เฉพาะ?   -  person Ron Rosenfeld    schedule 07.11.2019
comment
امانة منصقة عسير -بلدية بللحمر ดูสองสิ่งนี้ก่อน - มันจะมาใน 1 คอลัมน์และอยู่หลังคอลัมน์ - คำจะมาในอีกคอลัมน์หนึ่ง   -  person Skorpion    schedule 07.11.2019
comment
คุณทำงานกับ Excel เวอร์ชันใด   -  person Ron Rosenfeld    schedule 07.11.2019


คำตอบ (1)


เนื่องจากคุณระบุคำสำคัญที่ต้องการค้นหา เราจึงสามารถค้นหาคำสำคัญเหล่านั้น จากนั้นจึงค้นหาตัวคั่นที่เกี่ยวข้องตามตัวอย่างของคุณ

ในตัวอย่างของคุณ أمانة ตามด้วยเครื่องหมายขีดกลาง และ بلدية ตามด้วยเครื่องหมายทับ (ตามด้วย อยู่ในรูปของการวางแนวคำภาษาอาหรับจากขวาไปซ้าย)

ลองสิ่งนี้:

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

ป้อนคำอธิบายรูปภาพที่นี่

person Ron Rosenfeld    schedule 07.11.2019
comment
มันใช้งานได้ แต่ส่วนใหญ่ได้รับ Error #Value พวกเขามีคำที่ฉันกำลังค้นหา ฉันสามารถแชร์ไฟล์และดูว่าฉันทำผิดตรงไหน?? - person Skorpion; 07.11.2019
comment
@Skorpion มันเป็นไฟล์ Excel หรือไม่ ฉันคิดว่าการอ้างอิงไฟล์ที่คุณโพสต์คือไฟล์ Google ชีต และดูเหมือนว่าจะจัดการจากขวาไปซ้ายแตกต่างกัน - person Ron Rosenfeld; 07.11.2019
comment
ใช่ ไฟล์ Excel ฉันสามารถให้ลิงก์ Gdrive แก่คุณได้ไหม - person Skorpion; 07.11.2019
comment
@Skorpion ใช่ไปข้างหน้า - person Ron Rosenfeld; 07.11.2019
comment
โอเค ให้เวลาฉันด้วย - person Skorpion; 07.11.2019
comment
โปรดดูลิงก์ drive.google.com/ - person Skorpion; 07.11.2019
comment
คุณสามารถดาวน์โหลดจาก Google ชีตได้เช่นกัน ฉันให้สิทธิ์คุณแล้ว ... - person Skorpion; 07.11.2019
comment
@Skorpion ดูการแก้ไขของฉัน - person Ron Rosenfeld; 08.11.2019
comment
จนถึงแถว 155 ก็โอเคหลังจากที่มีปัญหาในคอลัมน์ R และในคอลัมน์ P ส่วนใหญ่มี امانة منصقة عسير -ب - และก็หนึ่งคำ - person Skorpion; 08.11.2019
comment
@Skorpion คุณมีหลายรูปแบบในข้อมูลของคุณที่ยากต่อการแยกแยะ เมื่อคุณระบุรูปแบบที่เป็นไปได้ทั้งหมดแล้ว วิธีแก้ปัญหาควรจะง่ายกว่านี้ รูปแบบสุดท้ายเดียวที่คุณนำเสนอคือวลีควรขึ้นต้นด้วย بلدية หรือ أمانة แต่ดูเหมือนว่าวลีนี้อาจลงท้ายด้วยอักขระที่หลากหลาย คุณต้องตรวจสอบข้อมูลของคุณอย่างใกล้ชิดเพื่อให้แน่ใจว่าคุณได้คำนึงถึงความเป็นไปได้ทั้งหมดแล้ว ถ้าอย่างนั้น การสร้างสูตรที่เชื่อถือได้มากขึ้นก็ควรจะค่อนข้างง่าย หรือหากมีการลงท้ายที่ไม่ซ้ำกัน ให้ตัดสินใจว่าจำเป็นต้องใช้อัลกอริทึมอื่น - person Ron Rosenfeld; 08.11.2019
comment
@Skorpion ดูการใช้งานที่ทำงานได้ใน ชีต หากต้องการเทียบเท่าใน Excel คุณจะต้องใช้ VBA - person Ron Rosenfeld; 08.11.2019
comment
ขอบคุณรอน โรสเฟลด์ ขอบคุณคุณ - person Skorpion; 08.11.2019
comment
@Skorpion นอกจากนี้ คุณได้ดูข้อมูล ของจริง ของคุณเพื่อให้แน่ใจว่าสูตรชีตใช้งานได้หรือไม่ คุณรู้วิธีเพิ่มฟังก์ชันที่ผู้ใช้กำหนดลงใน Excel หรือไม่? (คุณไม่ได้ใช้แท็ก VBA กับคำถามของคุณ) นี่คือสิ่งที่คุณต้องทำก่อน - person Ron Rosenfeld; 08.11.2019