在句子中寻找单词的公式

时间:2019-11-07 12:12:48

标签: excel office365

这是示例Google工作表文件 https://docs.google.com/spreadsheets/d/1B0CQyFeqxg2wgYHJpFxLIzw_8Pv067p0cwacWk0Nc4o/edit?usp=sharing

我有一张Excel工作表,需要查找阿拉伯语单词并将其分开。

例如,我有这样的数据:

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

我正在寻找:

  • 第一列:أمانةمنطقةعسير
  • 第二列:بلديةبللحمر
  • 第三列: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))

1 个答案:

答案 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引擎。

enter image description here