Формула для поиска слова в предложении - PullRequest
0 голосов
/ 07 ноября 2019

Вот пример файла листа 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))

1 Ответ

0 голосов
/ 07 ноября 2019

Поскольку вы указываете определенные ключевые слова, которые должны быть найдены, мы можем искать эти ключевые слова, а затем соответствующий разделитель на основе вашего примера.

В вашем примере за أمانة следует тире,и بلدية косой чертой. ( с последующим соответствует ориентации арабских слов справа налево).

Попробуйте это:

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!, не имеют этого ключевого слова вline.

Например:

A6: //olyservice/GIS-TANSIQ01/Storage/103-أمانة منطقة عسير -أحد رفيدة

не содержит بلدية

Кстати, эти формулы, похоже, также работают на листах.

Edit2:

Поскольку вы также разместили пример в Sheets, если вы можете реализовать его в Sheets , вы можете использовать регулярные выражения для учета нескольких завершений.

В этом случае вы должны использовать:

=iferror(REGEXEXTRACT(A2,"(أمانة.*?)\s*(?:[-/\\.]|$)"),"")

или

iferror(REGEXEXTRACT(A2,"(بلدية.*?)\s*(?:[-/\\.\w]|$)"),"")

для столбцов.

Регулярное выражение извлекает шаблон, начинающийся сключевая фраза, вплоть до терминатора, который может быть любым символом в наборе -/\.A-Za-z0-9 или в конце строки. Это похоже на примеры в вашей рабочей таблице, но если есть другие терминаторы, вы можете добавить их в последовательность.

В Excel для реализации движка Regex потребуется UDF VBA.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...