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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос корректировки текста ячейки - Мир MS Excel

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

Excel 2007
Доброго времени суток, форумчане.

Возникла необходимость в обработке огромного количества ячеек (40000штук в столбик A1-A40000) с коротким текстовым содержанием (по типу AxBxCyDy) по следующему принципу:

AxBxCyDy трансформировать в ABCDds
AxBxCyDz трансформировать в ABCDss
7x6x5x4y --> 7654ss
7x6y5z4u ---> 7654r
в общем, попробую описать закономерность, если в тексте из 8 симвлов встречается одна повторяющаяся больше чем один раз строчная буква(НЕ заглавная), то все строчные удалить и оставить только заглавные(или цифры) и сразу после них написать "ss"
А если среди строчных букв встречаются две повторяющиеся дважды буквы, то строчные удалить и после заглавных или цифр написать "ds"/

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

Приму любую помощь, и даже готов финансово отблагодарить за помощь.
Всем мир!
 
Ответить
СообщениеДоброго времени суток, форумчане.

Возникла необходимость в обработке огромного количества ячеек (40000штук в столбик A1-A40000) с коротким текстовым содержанием (по типу AxBxCyDy) по следующему принципу:

AxBxCyDy трансформировать в ABCDds
AxBxCyDz трансформировать в ABCDss
7x6x5x4y --> 7654ss
7x6y5z4u ---> 7654r
в общем, попробую описать закономерность, если в тексте из 8 симвлов встречается одна повторяющаяся больше чем один раз строчная буква(НЕ заглавная), то все строчные удалить и оставить только заглавные(или цифры) и сразу после них написать "ss"
А если среди строчных букв встречаются две повторяющиеся дважды буквы, то строчные удалить и после заглавных или цифр написать "ds"/

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

Приму любую помощь, и даже готов финансово отблагодарить за помощь.
Всем мир!

Автор - mdma
Дата добавления - 03.05.2018 в 03:37
Апострофф Дата: Четверг, 03.05.2018, 08:28 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 445
Репутация: 123 ±
Замечаний: 0% ±

Excel 1997
mdma, окончание r в 7654r ничего не сказано?


Сообщение отредактировал Апострофф - Четверг, 03.05.2018, 08:47
 
Ответить
Сообщениеmdma, окончание r в 7654r ничего не сказано?

Автор - Апострофф
Дата добавления - 03.05.2018 в 08:28
StoTisteg Дата: Четверг, 03.05.2018, 10:42 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
mdma, я правильно Вас понимаю, что нужно удалить строчные и поставить в конце ds, если они повторяются и ss, если они все разные? И да, присоединяюсь к вопросу Апострофф насчёт r.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщениеmdma, я правильно Вас понимаю, что нужно удалить строчные и поставить в конце ds, если они повторяются и ss, если они все разные? И да, присоединяюсь к вопросу Апострофф насчёт r.

Автор - StoTisteg
Дата добавления - 03.05.2018 в 10:42
sboy Дата: Четверг, 03.05.2018, 11:54 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
т.к. файла примера нет, и непонятно как располагаются данные, реализовал через пользовательскую функцию
[vba]
Код
Function mdma(a As String)
    With CreateObject("VBscript.RegExp")
        .Global = True
        .Pattern = "[^a-z]"
        t = .Replace(a, "")
        .Pattern = "[a-z]"
        t1 = .Replace(a, "")
        
            For x = 1 To Len(t)
                .Pattern = Left(t, 1)
                If .Execute(t).Count > 1 Then q = q + 1
                t = .Replace(t, "")
            Next
        
        Select Case q
        Case 0
            s = "r"
        Case 1
            s = "ss"
        Case 2
            s = "ds"
        End Select
        
        mdma = t1 & s
    End With
End Function
[/vba]
К сообщению приложен файл: mdma.xlsm (16.0 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
т.к. файла примера нет, и непонятно как располагаются данные, реализовал через пользовательскую функцию
[vba]
Код
Function mdma(a As String)
    With CreateObject("VBscript.RegExp")
        .Global = True
        .Pattern = "[^a-z]"
        t = .Replace(a, "")
        .Pattern = "[a-z]"
        t1 = .Replace(a, "")
        
            For x = 1 To Len(t)
                .Pattern = Left(t, 1)
                If .Execute(t).Count > 1 Then q = q + 1
                t = .Replace(t, "")
            Next
        
        Select Case q
        Case 0
            s = "r"
        Case 1
            s = "ss"
        Case 2
            s = "ds"
        End Select
        
        mdma = t1 & s
    End With
End Function
[/vba]

Автор - sboy
Дата добавления - 03.05.2018 в 11:54
StoTisteg Дата: Четверг, 03.05.2018, 12:27 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
sboy, я бы ещё кириллицу предусмотрел... "с" клавиша коварная :)


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщениеsboy, я бы ещё кириллицу предусмотрел... "с" клавиша коварная :)

Автор - StoTisteg
Дата добавления - 03.05.2018 в 12:27
sboy Дата: Четверг, 03.05.2018, 13:58 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
StoTisteg, "с" это в случае ручного ввода, а так если кириллицу проверять, то там половина букв еще)))
НО
т.к. файла примера нет

зачем придумывать лишние педали к велосипеду


Яндекс: 410016850021169
 
Ответить
СообщениеStoTisteg, "с" это в случае ручного ввода, а так если кириллицу проверять, то там половина букв еще)))
НО
т.к. файла примера нет

зачем придумывать лишние педали к велосипеду

Автор - sboy
Дата добавления - 03.05.2018 в 13:58
mdma Дата: Пятница, 04.05.2018, 20:46 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Большой респект всем за ответы. Задача на данный момент на паузе. Отвечу всем в ближайшее время. Спасибо!
 
Ответить
СообщениеБольшой респект всем за ответы. Задача на данный момент на паузе. Отвечу всем в ближайшее время. Спасибо!

Автор - mdma
Дата добавления - 04.05.2018 в 20:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос корректировки текста ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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