Удалите все после дефиса в именах через дефис в Excel с помощью формулы

#excel #excel-formula

Вопрос:

Я отвечаю за добавление новых сотрудников в наши системы распознавания речи и геймификации.

Когда я получаю пакет билетов, я собираю кучу данных в электронную таблицу, на которую затем ссылаюсь при добавлении этих пользователей в системы (у которых, к сожалению, нет опции загрузки JSON/CSV или чего-либо подобного).

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

Для одной из наших систем он имеет строгое ограничение по символам, а формат имени пользователя — «cdeимя.фамилия». Это не проблема для обычного объединения, но оно имеет строгое ограничение по символам, поэтому, если у пользователя фамилия через дефис, я в основном сброшу все после дефиса.

Сначала я попробовал простую формулу, используя комбинацию ЛЕВОГО и НАЙТИ -1, чтобы найти дефис, а затем взять все слева от него. Это, очевидно, в конечном итоге не работает, потому что я получаю ЗНАЧЕНИЕ#! для всех, у кого в фамилии нет дефиса.

Я попытался использовать IFERROR, чтобы сказать: «Хорошо, попробуйте вернуть фамилию без дефиса, в противном случае просто верните фамилию», но по какой-то причине, когда я помещаю ссылку в часть Return_If_Error, она не распознает ее как ссылку.

Поэтому я ищу формулу, которая будет работать со значением поиска и даст мне только то, что перед дефисом, но в противном случае все равно просто даст мне фамилию.

Базовая формула, которая у меня есть, которая просто ищет и объединяет первое и последнее в «cdefirstname.lastname», это:

 =CONCATENATE("cde",LOWER(XLOOKUP(G578,Sheet4!M:M,Sheet4!B:B)),".",LOWER(XLOOKUP(G578,Sheet4!M:M,Sheet4!C:C)))
 

Комментарии:

1. Поэтому используйте if (), чтобы выполнить логический тест для дефиса, и выполните одно выражение, если дефис присутствует, и другое, если его нет.

2. put the reference in the Return_If_Error portion.. как выглядит ссылка?

Ответ №1:

Чтобы расширить комментарии, у вас есть правильная идея, просто используйте IF оператор для проверки, содержит ли строка» -«, Затем используйте обычные строковые функции , Такие как FIND , LEFT и т. Д., Чтобы выбрать то, что вы хотите.

Например:

 ="cde/"amp;
LEFT(H1,FIND(".",H1)-1)amp;
IF(ISNUMBER(FIND("-",H1)),MID(H1,FIND(".",H1),FIND("-",H1)-FIND(".",H1)),
MID(H1,FIND(".",H1),FIND("@",H1)-FIND(".",H1)))
 

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