Страницы: 1
RSS
Найти первое вхождение текстового символа (любой буквы) в строке
 
Добрый день. Подскажите пожалуйста, как без VBA, только формулой, найти первое вхождение текстового символа (любой буквы кириллицы или латиницы) в строке?
Строки могут быть, например, такие:
4,4'-дибромбифенил
1-бром-4-фторбензол
4-хлор-o-крезол
5-нитро-o-толуидин
бензотрихлорид
(+)-2,2'-изопропилиденбис[(4r)-4-бензил-2-]оксазолин


В итоге, мне нужно будет сделать заглавной только первую букву в каждой строке.
 
Цитата
найти первое вхождение текстового символа (любой буквы кириллицы или латиницы) в строке
=ПОИСК() или =НАЙТИ()
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
AlexC написал:
В итоге, мне нужно будет сделать заглавной только первую букву в каждой строке.
Или так?! -

4,4'-Дибромбифенил
1-Бром-4-Фторбензол
4-Хлор-O-Крезол
5-Нитро-O-Толуидин
Бензотрихлорид
(+)-2,2'-Изопропилиденбис[(4R)-4-Бензил-2-]Оксазолин
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
а ПРОПНАЧ не подойдет?правда все слова будут с заглавной начинаться.
Вполне такой нормальный кинжальчик. Процентов на 100
 
китин, опередили)
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
китин написал: а ПРОПНАЧ не подойдет?правда все слова будут с заглавной начинаться.
Это было бы очень просто : )
Нужно именно только заглавный первый текстовый символ в строке

Цитата
bedvit написал: =ПОИСК() или =НАЙТИ()
А что именно искать? В excel я не нашел подстановочного символа для текстового символа
 
Как вариант, позицию первой буквы кириллицы можно найти так (для текста в А1, формула массива):
Код
=ПОИСКПОЗ(ИСТИНА;КОДСИМВ(ПСТР(A1;СТРОКА(СМЕЩ(A1;;;ДЛСТР(A1)));1))>191;)

Или так:
Код
=МИН(ЕСЛИОШИБКА(ПОИСК(СИМВОЛ(СТРОКА(192:255));A1);""))
Изменено: Влад - 05.08.2015 18:45:33
 
Вот так получилось. С доп. столбцом
Изменено: Михаил Лебедев - 05.08.2015 19:05:12 (Обновил пример)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Вот такая UDF получилась
Код
Function Benzol(S As String)
Dim L As Long, S1 As String
L = Len(S)
For i = 1 To L
    S1 = Mid(S, i, 1)
    If S1 Like "[а-яё]" Then
        Benzol = UCase(S1) & LCase(Right(S, L - i))
        If i > 1 Then Benzol = Left(S, i - 1) & Benzol
        Exit Function
    End If
Next i
End Function


 
Большое всем спасибо за решения!
Интуитивно понимал, что нужно что-то делать с массивами, но до функций СИМВОЛ и КОДСИМВ не додумался.
Страницы: 1
Читают тему
Наверх