Страницы: 1 2 След.
RSS
Можно-ли сделать буквы прописными до ближайшего тире?
 
Имеются папки с альбомами. Копирую их названия в Эксель. Можно-ли дать команду сделать буквы прописными до ближайшего тире? То  есть, чтоб "Алла Пугачева - Первая любовь" стало "АЛЛА ПУГАЧЕВА - Первая  любовь".
Изменено: Excaz - 17.11.2016 15:23:12
 
файл с примером нужен, т.к. если делать с помощью макроса, то в макросе надо прописать, с какими столбцами, строками работать
 
=ПРОПИСН(ПСТР(A1;1;НАЙТИ("-";A1)-1))&ПСТР(A1;НАЙТИ("-";A1);20)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Код
Sub F()
    Dim str$, iPos%
    str = "Алла Пугачева - Первая любовь"
    iPos = InStr(1, str, "-")
    Mid$(str, 1, iPos) = UCase(Mid$(str, 1, iPos))
    MsgBox str
End Sub
There is no knowledge that is not power
 
Цитата
Karataev написал: файл с примером нужен
Плиз.
 
Код
Sub RRR()
    Dim r&, str$, iPos%
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        str = Cells(r, 1).Value
        iPos = InStr(1, str, "-")
        Mid$(str, 1, iPos) = UCase(Mid$(str, 1, iPos))
        Cells(r, 2).Value = str
    Next
End Sub
There is no knowledge that is not power
 
Это куда вписать?
 
Тынц.
There is no knowledge that is not power
 
Цитата
Владимир написал: =ПРОПИСН(ПСТР(A1;1;НАЙТИ("-";A1)-1))&ПСТР(A1;НАЙТИ("-";A1);20)
Это подошло. Благодарю. Только я сам цифру 20 поменял на 60. Если я правильно понял, 20 это количество знаков в строке.
 
Код
Sub Прописные()

    Dim arr1(), arr2(), varStr As String
    Dim lngInStr As Long, lr As Long, i As Long
    
    Application.ScreenUpdating = False
    
    Columns("B").ClearContents
    
    lr = Cells(Rows.Count, "A").End(xlUp).Row
    If lr = 1 Then
        ReDim arr(1 To 1, 1 To 1)
        arr1(1, 1) = Range("A1").Value
    Else
        arr1() = Range("A1").Resize(lr).Value
    End If
    ReDim arr2(1 To UBound(arr1, 1), 1 To 1)
    
    For i = 1 To UBound(arr1)
        varStr = arr1(i, 1)
        lngInStr = InStr(varStr, "-")
        If lngInStr <> 0 Then
            arr2(i, 1) = UCase(Left(varStr, lngInStr - 1)) & Mid(varStr, lngInStr)
        End If
    Next
    
    Range("B1").Resize(lr).Value = arr2()
    
    Application.ScreenUpdating = True
    
    MsgBox "Готово!", vbInformation

End Sub

PS. Не цитируйте полностью пост (об этом сказано в правилах форума). Цитировать нужно фрагменты поста. Если хотите к кому-то обратиться, то просто пишите ник.
По поводу того, куда вставить макрос. Это уже отдельная тема, или создайте новую тему или сначала поищите в гугле, т.к. это скорее всего распространенный вопрос.
Изменено: Karataev - 17.11.2016 15:50:26
 
Karataev, Чёт какой-то сложный код...
There is no knowledge that is not power
 
SuperCat, благодарю. Вы истинный мастер (Excel).
 
There is no knowledge that is not power
 
Bыше мы поменяли регистр до ближайшего тире, превратив Алла Пугачева - Первая любовь в АЛЛА ПУГАЧЕВА - Первая  любовь
Как правило, в названиях альбомов регистр скачет от прописных до строчных. Поэтому, я хотел спросить. Можно ли усовершенствовать скрипт так, чтобы все буквы до ближайшего тире стали прописными, а после тире лишь начальная буква стала прописной (как в предложениях)?

Пример:
Алла Пугачева - Первая любовь > АЛЛА ПУГАЧЕВА - Первая  любовь
KICHKA BODOUROVA - THE BEST SONGS > KICHKA BODOUROVA - The Best Songs
 kostas makedonas - pame makria   > KOSTAS MAKEDONAS - Pame makria
giannis kotsiras - NA THO PHOS > GIANNIS KOTSIRAS - Na to phos
Изменено: Excaz - 15.12.2016 10:59:04
 
Угадайте с одного раза - как помогающим проще:
- создать файл, копировать на лист фразу...
- открыть пример, прикрепленный к сообщению.
 
В колонке А исходные значения, в колонке В каковыми должны стать.
 
Цитата
Excaz написал:
а после тире лишь начальная буква стала прописной (как в предложениях)?
KICHKA BODOUROVA - THE BEST SONGS > KICHKA BODOUROVA - The Best Songs
как то не очень вяжется - The Best Songs

по мотивам формулы Владимир,
Код
=ПРОПИСН(ЛЕВСИМВ(A1;ПОИСК(" -";A1)+3))&СТРОЧН(ПСТР(A1;ПОИСК(" -";A1)+4;99))
Лень двигатель прогресса, доказано!!!
 
SuperCat, можно ли чуть усовершенствовать ваш скрипт, чтобы до ближайшего тире все буквы были прописными, а после тире (слова справа) буквы были как в предложениях (т.е. лишь начальные буквы заглавные)? Максимальное количество знаков в строке можно 99.
Исходные значения могут быть произвольного регистра. Вне зависимости от этого, нужно соблюдать чтоб до тире все было прописными, а после, как в предложениях.  

Пример (1 строка исходное значение, 2-я строка хочу получить):
алла ПуГАчева и ФиЛипп кИркоров - ПеРвАЯ ЛЮБоВь (потрясающий релиз, 1999)
АЛЛА ПУГАЧЕВА и ФИЛИПП КИРКОРОВ - Первая любовь (Потрясающий pелиз, 1999)

Желательно, одиночные буквы (предлоги) на разных языках между словами (как в примере) получить строчными, но это непринципиально и после скобки в правой части (после тире) соблюсти первую букву заглавную.
Ваш скрипт был такой.
Код
Sub RRR()
    Dim r&, str$, iPos%
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        str = Cells(r, 1).Value
        iPos = InStr(1, str, "-")
        Mid$(str, 1, iPos) = UCase(Mid$(str, 1, iPos))
        Cells(r, 2).Value = str
    Next
End Sub
Изменено: Excaz - 19.12.2016 16:13:41
 
Цитата
Excaz написал:
до ближайшего тире все буквы были прописными, а после тире (слова справа) буквы были как в предложениях (т.е. лишь начальные буквы заглавные)?

1 строка исходное значение: алла ПуГАчева и ФиЛипп кИркоров - ПеРвАЯ ЛЮБоВь (потрясающий релиз, 1999)
2 строка хочу получить: АЛЛА ПУГАЧЕВА и ФИЛИПП КИРКОРОВ - ПЕРВАЯ ЛЮБОВЬ (Потрясающий pелиз, 1999)
У Вас во второй строке (которую хотите получить) и До и После тире ВСЕ буквы прописные (кроме слов в скобках).
Опять-же почему буква и До тире строчная, раз Вы пишите что бы  ВСЕ буквы были прописными?
В чем подвох? Что Вы реально хотите получить?
Изменено: Sanja - 18.12.2016 10:12:55
Согласие есть продукт при полном непротивлении сторон
 
Согласен с Sanja. Что-то пример того, что хотите получить, не вяжется со словами.
Так?
Код
Sub RRR()
    Dim r&, str$, iPos%
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    str = Cells(r, 1).Value
    iPos = InStr(1, str, "-")
    Mid$(str, 1, iPos) = UCase(Mid$(str, 1, iPos))
    Mid$(str, iPos) = Application.Proper(Mid$(str, iPos))
    Cells(r, 2).Value = str
    Next
End Sub
There is no knowledge that is not power
 
Sanja и SuperCat, действительно, в приведенном примере я сам немножко "споткнулся".
Правильно АЛЛА ПУГАЧЕВА и ФИЛИПП КИРКОРОВ - Первая любовь (Потрясающий pелиз, 1999).
Одинокое строчное и между именами лучше оставить.

SuperCat, в Excel-e я не гуру. Поэтому, хотел спросить, куда вписать ваш код? Макрос я вижу, вроде сохранил в нем этот код (наверное мимо), но не действует.
Изменено: Excaz - 18.12.2016 13:39:56
 
Цитата
Excaz написал: в Excel-e я не гуру...
Так, мо быть, он - XL - и вообще не нужен?! Куда/зачем эта инфа из него пойдет?!
Предположу, что "меломану" будет достаточно проги подобно тэгсканерам.
Идея - целесообразность - вашей затеи в чем?.. ;)  
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Я храню альбомы на DVD  дисках и имею подробный электронный каталог ко всем 400 дискам. Чтобы иметь быстрый доступ к искомой песне, все тэги и названия альбомов должны быть аккуратно надписаны. Именно этого я и придерживаюсь. То есть, я не могу название альбома оставить корявым, потом трудно его будет найти в каталоге по поиску.
 
Заменить старый код на новый - просто вставить текст.
There is no knowledge that is not power
 
Цитата
SuperCat написал:
Заменить старый код на новый - просто вставить текст.
Куда? Думаете я в Экселе так хорםшо разбираюсь.
 
Сергей, а можно ли переиначить формулу?
=ПРОПИСН(ЛЕВСИМВ(A1;ПОИСК(" -";A1)+3))&СТРОЧН(ПСТР(A1;ПОИСК(" -";A1)+4;99))

Сейчас мне нужно вывести в отдельный столбец (чтобы легко было  сортировать) имена файлов, оканчивающиеся на .mp3. То есть,  mp3 (из-за отличия в длине путей) может встретиться и в колонке В и в колонке К. Словом, та ячейка где попадается .mp3 надо скопировать в колонку L с соблюдением нумерации строк (они должны совпадать у оригинальной и скопированной). Дело в том, что мои  файлы разбросаны по разным локальным дискам и имеют разные пути (длинные и  короткие), напр.
D:\Shanson\Pycские\VA - Сто Магнитоальбомов Советского Рока (1977-1991)\1986 - АКВАРИУМ - Дети декабря \Аквариум - Я-змея.mp3
или
F:\Italia\Franco Staco\bonus tracks\Una Storia Sbagliata.mp3
Mp3-шки, насколько я понимаю, можно локализовать, отметив - Поиск до  ближайшего \ справа. Как правильно написать формулу? Количество строк у  меня бывает разное, от 1000 до 50000.
Изменено: Excaz - 28.03.2017 12:46:14
 
=правб(ячейка;3)
Лень двигатель прогресса, доказано!!!
 
Нет, неправильно. Hазвание песни может состоять и из двух слов и из 10. А вы написали 3 справа.
 
создайте новую тему, приложите пример формула =правб(ячейка;3) вытащила бы только mp3
Лень двигатель прогресса, доказано!!!
 
Создал
Страницы: 1 2 След.
Наверх