Формула для поиска слова в предложении

Вот образец файла таблицы Google / 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-أمانة منطقة عسير -أحد رفيدة

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

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

Edit2:

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

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

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

or

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

для колонн.

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

В Excel для этого потребуется UDF VBA для реализации механизма Regex.

введите здесь описание изображения

person Ron Rosenfeld    schedule 07.11.2019
comment
Он сработал, но большинство из них получает ошибку # Значение, у них есть слово, которое я ищу, могу ли я поделиться файлом и посмотреть, где я делаю не так? - person Skorpion; 07.11.2019
comment
@Skorpion Это файл Excel? Ссылка на файл, которую вы опубликовали, я думаю, является файлом Google Sheets, и, похоже, он по-разному обрабатывает направление справа налево. - 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, у большинства из них есть أمانة منطقة عسير -ب - и thn одно слово - 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