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

Вход

Регистрация

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

 

= Мир MS Excel/Разбить текст в столбце на два столбца по словам - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Разбить текст в столбце на два столбца по словам
Studentka86 Дата: Суббота, 29.06.2019, 16:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Товарищи, снова без вашей помощи никак.
Пишу макрос, не работает.
Есть столбец со словами и цифрами разной длины. Нужно поделить его на два столбца по словам, в первом (соседнем) должно быть 35 символов и меньше (на конце не должно быть пробела), во втором (соседний через 2) все оставшееся.
Если изначально 35 и меньше символов, просто скопировать в соседний столбец.
Есть тонкость, если в исходном столбце на конце восклицательный знак и вместе с ним 36 символов, то удалить восклицательный знак и скопировать в соседний столбец.
Писать начала, но бросила, не идет %)

[vba]
Код
Sub символов()
Dim cel As Variant   'ячейка - переменная
Dim prom As Single   'промежуточное хранение содержимого ячейки
Dim simvol As Single 'количество символов в ячейке

       
        For Each cel In Selection.Cells
        simvol = Len(cel.Value)
            If simvol > 35 Then
               If simvol = 36 And Right(cel.Value, 1) = "!" Then
                  cel(LastCol + 1, LastRow).Value = Left(cel.Value, Len(cel.Value) - 1)
                  Else
                             
           prom = "=SUBSTITUTE(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*1),1,999),"" "","""")"
           simvol = Len(prom)
           If simvol >= 36 Then
                
           prom = "=TRIM(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*2),1,999*2))"
           simvol = Len(prom)
           If simvol >= 36 Then
     
           prom = "=TRIM(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*3),1,999*3))"
           simvol = Len(prom)
           If simvol >= 36 Then

           prom = "=TRIM(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*4),1,999*4))"
           simvol = Len(prom)
           
           Else
           
        cel(LastCol + 1, LastRow).Value = prom
        End If
        Next
     
End Sub
[/vba]
К сообщению приложен файл: ___35.xlsm (17.4 Kb)


Сообщение отредактировал Studentka86 - Суббота, 29.06.2019, 16:18
 
Ответить
СообщениеТоварищи, снова без вашей помощи никак.
Пишу макрос, не работает.
Есть столбец со словами и цифрами разной длины. Нужно поделить его на два столбца по словам, в первом (соседнем) должно быть 35 символов и меньше (на конце не должно быть пробела), во втором (соседний через 2) все оставшееся.
Если изначально 35 и меньше символов, просто скопировать в соседний столбец.
Есть тонкость, если в исходном столбце на конце восклицательный знак и вместе с ним 36 символов, то удалить восклицательный знак и скопировать в соседний столбец.
Писать начала, но бросила, не идет %)

[vba]
Код
Sub символов()
Dim cel As Variant   'ячейка - переменная
Dim prom As Single   'промежуточное хранение содержимого ячейки
Dim simvol As Single 'количество символов в ячейке

       
        For Each cel In Selection.Cells
        simvol = Len(cel.Value)
            If simvol > 35 Then
               If simvol = 36 And Right(cel.Value, 1) = "!" Then
                  cel(LastCol + 1, LastRow).Value = Left(cel.Value, Len(cel.Value) - 1)
                  Else
                             
           prom = "=SUBSTITUTE(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*1),1,999),"" "","""")"
           simvol = Len(prom)
           If simvol >= 36 Then
                
           prom = "=TRIM(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*2),1,999*2))"
           simvol = Len(prom)
           If simvol >= 36 Then
     
           prom = "=TRIM(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*3),1,999*3))"
           simvol = Len(prom)
           If simvol >= 36 Then

           prom = "=TRIM(MID(RIGHT("" ""&SUBSTITUTE(cel.Value,"" "",REPT("" "",999)),999*4),1,999*4))"
           simvol = Len(prom)
           
           Else
           
        cel(LastCol + 1, LastRow).Value = prom
        End If
        Next
     
End Sub
[/vba]

Автор - Studentka86
Дата добавления - 29.06.2019 в 16:14
Pelena Дата: Суббота, 29.06.2019, 18:15 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Формульный вариант не подойдёт?
Код
=СЖПРОБЕЛЫ(ПСТР(C2;1;ПРОСМОТР(36;ПОИСК(" ";ЕСЛИ(ПСТР(C2;36;1)="!";ЗАМЕНИТЬ(C2;36;1;)&" ";C2&" ");СТРОКА($1:$36)))-1))
К сообщению приложен файл: _35.xlsm (19.8 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеФормульный вариант не подойдёт?
Код
=СЖПРОБЕЛЫ(ПСТР(C2;1;ПРОСМОТР(36;ПОИСК(" ";ЕСЛИ(ПСТР(C2;36;1)="!";ЗАМЕНИТЬ(C2;36;1;)&" ";C2&" ");СТРОКА($1:$36)))-1))

Автор - Pelena
Дата добавления - 29.06.2019 в 18:15
Studentka86 Дата: Суббота, 29.06.2019, 21:42 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, гениально! Я просто и подумать не могла, что это можно сделать с помощью формул!
Спасибо! Сейчас немножко спасибо перечислю на ЯД.
 
Ответить
СообщениеPelena, гениально! Я просто и подумать не могла, что это можно сделать с помощью формул!
Спасибо! Сейчас немножко спасибо перечислю на ЯД.

Автор - Studentka86
Дата добавления - 29.06.2019 в 21:42
Pelena Дата: Суббота, 29.06.2019, 21:55 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
И Вам спасибо :)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеИ Вам спасибо :)

Автор - Pelena
Дата добавления - 29.06.2019 в 21:55
  • Страница 1 из 1
  • 1
Поиск:

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