这是示例Google工作表文件 https://docs.google.com/spreadsheets/d/1B0CQyFeqxg2wgYHJpFxLIzw_8Pv067p0cwacWk0Nc4o/edit?usp=sharing
我有一张Excel工作表,需要查找阿拉伯语单词并将其分开。
例如,我有这样的数据:
//olyservice/GIS-TANSIQ01/Storage/46-أمانة منطقة عسير -بلدية بللحمر/حدود القري المطلوب اعتمادهاالمعتمد مسمايتها بالوزارة.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))
答案 0 :(得分:0)
由于您指定了要查找的某些关键字,因此我们可以根据您的示例查找这些关键字,然后查找相关的定界符。
在您的示例中,أمانة
后跟短划线,بلدية
后跟斜杠。 (后跟是阿拉伯语单词从右到左的方向。)
尝试一下:
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-أمانة منطقة عسير -أحد رفيدة
不包含بلدية
顺便说一句,这些公式似乎同样适用于Sheets。
编辑2:
由于您还在表格中发布了一个示例,因此,如果可以在 Sheets 中实施此示例,则可以使用正则表达式来说明多个终止。
在这种情况下,您将使用:
=iferror(REGEXEXTRACT(A2,"(أمانة.*?)\s*(?:[-/\\.]|$)"),"")
或
iferror(REGEXEXTRACT(A2,"(بلدية.*?)\s*(?:[-/\\.\w]|$)"),"")
用于列。
正则表达式提取从关键字词组开始直至终止符的模式,终止符可以是-/\.A-Za-z0-9
集中的任何字符或行尾。这似乎涵盖了示例工作表中的示例,但是如果还有其他终止符,则可以将它们添加到序列中。
在Excel中,这需要VBA UDF来实现Regex引擎。