У меня есть список имен, и я пытаюсь извлечь первое слово, затем первый символ 2-го слова и 3-й символ 3-й работы и так далее...
Я смог только сделать эту формулу, но она работает до 2-го имени, как добиться дальнейшего, любая помощь будет высоко оценена.
=LEFT(D4,FIND(" ",D4)-1)&" "&LEFT(LEFT(D4,SEARCH(" ",D4)-1),1)
[введите описание ссылки здесь][2]
[2]:
Ссылка
@ player0 ввод находится в столбце с надписью «строка», а вывод — в столбце с надписью «результат», или вы думаете, что я что-то пропустил?
@SolarMike, вы этого не сделали, я думаю, это просто «легко» масштабировать (легко, например, избегать присоединения чудовищных строк, чтобы это работало для 10+ имен)
Итак, я взял только два ваших примера, так как у меня нет времени вводить их все, но это работает:
LEFT(B1,FIND(" ",B1)-1)&" "&MID(B1,FIND(" ",B1,1)+1,1)&IFERROR(MID(B1,FIND(" ",B1,FIND(" ",B1,1)+1)+1,1),"")
Я использовал mid() вместо левой(левой(сконструировать и найти()), чтобы найти второе и третье пробелы.
Если ошибка не возникает, когда третьего имени не существует.
Вы можете расширить это на 4 имени :) удачи.
Привет, спасибо, что поделились ответом, но что, если в имени больше слов, например, более 3. Он займет первый символ 4-го или 5-го слова и выдаст ошибку, если строка имеет только одно имя.
@HSHO Как я уже говорил в своем ответе, я показал, как это сделать для 3, и я оставил вас, чтобы расширить его для 4 или более, просто вопрос о том, чтобы найти положение пробелов, которые я ясно показал.
Пытаться:
=ARRAYFORMULA(IFNA(REGEXEXTRACT(B2:B, "\w+ ")&
BYROW(B2:B, LAMBDA(x, TEXTJOIN(, 1, IFNA(REGEXEXTRACT(
SPLIT(REGEXREPLACE(x, "^(\w+) ", ), " "), "[A-Z]"))))))
=ARRAYFORMULA(IFNA(TRIM(REGEXEXTRACT(B2:B, "\w+")&" "&
BYROW(B2:B, LAMBDA(x, TEXTJOIN(, 1, IFERROR(REGEXEXTRACT(
SPLIT(REGEXREPLACE(x&" ", "^(\w+) ", ), " "), "[A-Z]"))))))))
Большое спасибо, но это не работает, если ячейка имеет одно имя. @player0
@HSHO Но ни в одном из приведенных вами примеров нет ни одного имени. Почему вы находите препятствия или это вопрос с безграничной ползучестью? В этом случае мы, как правило, перестаем играть.
Вот еще один вариант регулярного выражения, который вы можете попробовать:
-
Поздно в игре, но я думаю, что это был бы чистый способ извлечения этих букв, без рвоты на отдельные слова или пустые ячейки:
=iferror(regexextract(B2,"\w+ ?")®exreplace(mid(proper(B2),2,99),"[^A-Z]",""))
...или как формула массива:
=arrayformula( iferror(
regexextract(B2:B, "\w+ ?") & regexreplace(mid(proper(B2:B), 2, 99), "[^A-Z]", "")
) )
Обновил ссылку @player0