Страницы: 1
RSS
Формула для аббревиатуры
 
Есть формула, которая составляет аббревиатуру из первых букв трех слов:
Код
=ПРОПИСН(ЛЕВСИМВ(A1;1)&ПСТР(A1;ДЛСТР(ЛЕВСИМВ(A1;НАЙТИ(" ";A1)+1));1)&ПСТР(A1;ДЛСТР(ЛЕВСИМВ(A1;НАЙТИ(" ";A1;ДЛСТР(ЛЕВСИМВ(A1;НАЙТИ(" ";A1)))+1)))+1;1))

Как ее изменить для получения аббревиатуры из четырех слов?
Изменено: strawberryjam - 23.04.2015 22:26:45
 
И для трех, и для четырех:
=ЛЕВСИМВ(A1)&ПСТР(A1;ПОИСК(" ";A1)+1;1)&ПСТР(A1;ПОИСК(":";ПОДСТАВИТЬ(A1;" ";":";2))+1;1)&ПСТР(A1;ПОИСК(":";ПОДСТАВИТЬ(A1&" ";" ";":";3))+1;1)
 
Можно вот такой UDF, ей все равно сколько слов
Код
Function GetAbbr(Sorce As String) As String
Dim arr
arr = Split(Sorce)
For i = 0 To UBound(arr)
GetAbbr = GetAbbr & Left(arr(i), 1)
Next i
GetAbbr = UCase(GetAbbr)
End Function

 
МВТ, огромное спасибо за UDF.Идеальное решение
 
Цитата
написал:
Можно вот такой UDF, ей все равно сколько слов
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8      Function   GetAbbr(Sorce   As   String  )   As   String    Dim   arr    arr = Split(Sorce)    For   i = 0   To   UBound(arr)    GetAbbr = GetAbbr & Left(arr(i), 1)    Next   i    GetAbbr = UCase(GetAbbr)    End   Function   
 
Изменено: Evgen Evgen - 18.11.2022 12:32:56
 
Долго бился, для таких как я, первая сточка должна  выглядеть так:

Public Function GetAbbr(Sorce As String) As String

Автору спасибо, все работает.
 
365
Код
=ОБЪЕДИНИТЬ("";;ПСТР(ТЕКСТРАЗД(A1;" ";);1;1))
 
Громоздко, но рабочее решение:

Сокращение до 8 слов с увеличением до Прописных букв слов, а также прописной буквой "и".

Например,
Отдел наказания, истязания и полного смирения
ОНИиПС

Код
=ЛЕВСИМВ(M2)&
ПРОПИСН(ПСТР(M2;ПОИСК(" ";M2)+1;1))&
ЕСЛИОШИБКА(   ЕСЛИ(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2;" ";":";2));3) = " и ";"и";ПРОПИСН(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2;" ";":";2))+1;1)));"")&
ЕСЛИОШИБКА(   ЕСЛИ(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";3));3) = " и ";"и";ПРОПИСН(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";3))+1;1)));"")&
ЕСЛИОШИБКА(   ЕСЛИ(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";4));3) = " и ";"и";ПРОПИСН(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";4))+1;1)));"")&
ЕСЛИОШИБКА(   ЕСЛИ(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";5));3) = " и ";"и";ПРОПИСН(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";5))+1;1)));"")&
ЕСЛИОШИБКА(   ЕСЛИ(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";6));3) = " и ";"и";ПРОПИСН(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";6))+1;1)));"")&
ЕСЛИОШИБКА(   ЕСЛИ(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";7));3) = " и ";"и";ПРОПИСН(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";7))+1;1)));"")&
ЕСЛИОШИБКА(   ЕСЛИ(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";8));3) = " и ";"и";ПРОПИСН(ПСТР(M2;ПОИСК(":";ПОДСТАВИТЬ(M2&" ";" ";":";8))+1;1)));"")
Нет ТЗ - получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее
 
Для Excel 365:
=ПРОПИСН(СЦЕП(ЛЕВБ(ТЕКСТРАЗД(A1;" "))))

Если нужно Чип и Дейл переделать на ЧиД, то:
=LET(x;ТЕКСТРАЗД(A1;" ");СЦЕП(ЛЕВБ(ЕСЛИ(x="и";"и";ПРОПИСН(x)))))
 
Добрый день! Формула массива:
Код
=ПОДСТАВИТЬ(СЦЕП(ПСТР(ПОДСТАВИТЬ(ПСТР(" "&ПОДСТАВИТЬ(ПРОПИСН(СЖПРОБЕЛЫ(СТРОЧН(A1))); " И "; " и ");СТРОКА($1:$255);2);" ";"  ");3;1));" ";"")
Изменено: Алексей Абраменко - 20.06.2024 17:20:18
Страницы: 1
Наверх