Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск заглавных букв и их замена - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск заглавных букв и их замена (Формулы/Formulas)
Поиск заглавных букв и их замена
booggy Дата: Вторник, 05.02.2019, 22:56 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый вечер, гуру Екселя))) Нужна ваша помощь. Вводные данные: есть название товаров, некоторые слова в названии написаны прописными буквами. Суть задачи: необходимо в словах написанных заглавными буквами заменить все буквы кроме первой на строчные. Файл прикрепляю. Заранее благодарен за помощь
К сообщению приложен файл: 8579828.xlsx (8.2 Kb)
 
Ответить
СообщениеДобрый вечер, гуру Екселя))) Нужна ваша помощь. Вводные данные: есть название товаров, некоторые слова в названии написаны прописными буквами. Суть задачи: необходимо в словах написанных заглавными буквами заменить все буквы кроме первой на строчные. Файл прикрепляю. Заранее благодарен за помощь

Автор - booggy
Дата добавления - 05.02.2019 в 22:56
InExSu Дата: Среда, 06.02.2019, 00:31 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Привет!

[vba]
Код
Option Explicit

Public Sub REName_()

    Range_2_Proper ActiveSheet.UsedRange

End Sub

Public Sub Range_2_Proper(r As Range)

    Dim ceLL As Range

    For Each ceLL In r

        With ceLL

            .Value = a1_UPPER_2_Proper( _
                    Split(.Value))

        End With
    Next
End Sub

Public Function a1_UPPER_2_Proper(a1 As Variant) _
        As String

    Dim x As Long

    For x = LBound(a1) To UBound(a1)

        If a1(x) = UCase(a1(x)) Then

            a1(x) = WorksheetFunction.Proper(a1(x))

        End If

    Next

    a1_UPPER_2_Proper = Join(a1)

End Function
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac

Сообщение отредактировал InExSu - Среда, 06.02.2019, 11:40
 
Ответить
СообщениеПривет!

[vba]
Код
Option Explicit

Public Sub REName_()

    Range_2_Proper ActiveSheet.UsedRange

End Sub

Public Sub Range_2_Proper(r As Range)

    Dim ceLL As Range

    For Each ceLL In r

        With ceLL

            .Value = a1_UPPER_2_Proper( _
                    Split(.Value))

        End With
    Next
End Sub

Public Function a1_UPPER_2_Proper(a1 As Variant) _
        As String

    Dim x As Long

    For x = LBound(a1) To UBound(a1)

        If a1(x) = UCase(a1(x)) Then

            a1(x) = WorksheetFunction.Proper(a1(x))

        End If

    Next

    a1_UPPER_2_Proper = Join(a1)

End Function
[/vba]

Автор - InExSu
Дата добавления - 06.02.2019 в 00:31
_Boroda_ Дата: Среда, 06.02.2019, 10:44 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Немного более другой вариант, не все первые буквы заглавляет
Выделяете нужный диапазон и жмете кнопку
[vba]
Код
Sub tt()
    ar0 = Selection.Value
    For i = 1 To UBound(ar0)
        For j = 1 To UBound(ar0, 2)
            fl_ = 0
            ar = Split(ar0(i, j))
            For k = 0 To UBound(ar)
                If Not IsNumeric(Left(ar(k), 1)) Then
                    If Mid(ar(k), 2) <> LCase(Mid(ar(k), 2)) Then
                        If Left(ar(k), 1) = UCase(Left(ar(k), 1)) Then
                            ar(k) = Application.Proper(ar(k))
                            fl_ = 1
                        End If
                    End If
                End If
            Next k
            If fl_ Then
                ar0(i, j) = Join(ar)
            End If
        Next j
    Next i
    Selection = ar0
End Sub
[/vba]
К сообщению приложен файл: 8579828_1.xlsm (17.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНемного более другой вариант, не все первые буквы заглавляет
Выделяете нужный диапазон и жмете кнопку
[vba]
Код
Sub tt()
    ar0 = Selection.Value
    For i = 1 To UBound(ar0)
        For j = 1 To UBound(ar0, 2)
            fl_ = 0
            ar = Split(ar0(i, j))
            For k = 0 To UBound(ar)
                If Not IsNumeric(Left(ar(k), 1)) Then
                    If Mid(ar(k), 2) <> LCase(Mid(ar(k), 2)) Then
                        If Left(ar(k), 1) = UCase(Left(ar(k), 1)) Then
                            ar(k) = Application.Proper(ar(k))
                            fl_ = 1
                        End If
                    End If
                End If
            Next k
            If fl_ Then
                ar0(i, j) = Join(ar)
            End If
        Next j
    Next i
    Selection = ar0
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 06.02.2019 в 10:44
booggy Дата: Среда, 06.02.2019, 14:26 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо огромное, все работает отлично. Вопрос решен)
 
Ответить
СообщениеСпасибо огромное, все работает отлично. Вопрос решен)

Автор - booggy
Дата добавления - 06.02.2019 в 14:26
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поиск заглавных букв и их замена (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!